'Programing'에 해당되는 글 58건

  1. 2015.04.27 클래스 template
  2. 2015.04.27 함수 Template
  3. 2015.04.25 프로젝트 오일러 9번
  4. 2015.04.06 Recursive Fibonacci
  5. 2015.04.06 순환/재귀 팩토리알 구현
  6. 2015.04.06 3개의 숫자를 내림차순으로 정렬
  7. 2015.03.31 스케쥴러
  8. 2015.03.31 Process의 실행 관련
  9. 2015.03.31 프로세스의 개념
  10. 2015.03.31 Thread 생성 방법

2015. 4. 27. 23:56 Programing/C++

클래스 template

Template <typename T>

class C{

public:

.

.

.

.

};


로 구현한다. 클래스 선언 앞에 키워드만 붙이면 된다.


Template <typename T = double, int size = 10> 처럼 디폴트 매개변수의 값을 지정 할 수 있다.

'Programing > C++' 카테고리의 다른 글

간단한 오버라이딩  (0) 2015.09.02
구조체로 구현한 Invader  (0) 2015.06.09
함수 Template  (0) 2015.04.27
이차원 동적 배열 입력 받아 생성하기  (0) 2015.02.10
Tree 구현하기  (0) 2015.02.10
Posted by kimmayer

2015. 4. 27. 23:34 Programing/C++

함수 Template

 template <typename T [ parameters ]> [return type] Function ( T a [ arguments ] ) { }


template 키워드와 함께 <> 안에 템플릿 파라미터 목록을 적게된다.

템플릿 파라미터로는 'typename T'와 같은 데이터 타입이 올 수도 있지만, int N처럼 데이터 타입이 아닌 파라미터나 'template class Unit'과 같은 템플릿 템플릿 파라미터가 올 수도 있다.


다음은 큰 값을 리턴하는 템플릿의 예제이다.


#include <iostream> using namespace std;    

template <typename T>      T max(T const& a, T const& b)      {        return a < b ? b : a;      } int main() { cout<< max(3, 4) << endl; }



'Programing > C++' 카테고리의 다른 글

구조체로 구현한 Invader  (0) 2015.06.09
클래스 template  (0) 2015.04.27
이차원 동적 배열 입력 받아 생성하기  (0) 2015.02.10
Tree 구현하기  (0) 2015.02.10
C++ 문자형을 int형으로  (0) 2015.02.10
Posted by kimmayer

//

//  main.c

//  project euler

//

//  Created by 김일호 on 2015. 4. 25..

//  Copyright (c) 2015 김일호. All rights reserved.

//


#include <stdio.h>


int main(int argc, const char * argv[]) {

    int product = 0;

    

    for(int i =1; i<1000; i++)

        for (int j = 1; j<1000; j++){

            for (int k = 1; k<1000; k ++)

            {

                if( j < i && k < j)

                    break;

                if((i * i) + (j * j) == (k*k))

                {

                    product = i+j+k;

                    if(product == 1000)

                    {

                        printf("%d %d %d",i, j, k);

                        return 0;

                    }

                }

                else if (k+j>1000)

                {product = 0;break;}

                else if (k+i>1000)

                {product = 0;break;}

                product = 0;

            }

            if(i+j>1000){

                product = 0;

               break;

            }

        }

    return 0;

}



'Programing > Algorithm' 카테고리의 다른 글

Selection Sort  (0) 2015.09.27
프로젝트 오일러 10번  (0) 2015.07.29
Recursive Fibonacci  (0) 2015.04.06
순환/재귀 팩토리알 구현  (0) 2015.04.06
3개의 숫자를 내림차순으로 정렬  (0) 2015.04.06
Posted by kimmayer

#include <stdio.h>


int fibonacci(int n);

int main()

{

    int number;

    int total = 0;

    printf("input the number\n");

    scanf("%d", &number);

    printf("recursive fibonacci = %d \n", fibonacci(number));

}


int fibonacci(int n){

    if (n < 3)

        return 1;

    else return fibonacci(n-2) + fibonacci(n-1);

}


/*C++ 피보나치 합 구하기*/

#include <iostream>

using namespace std;


int fibonacci(int n);


int main()

{

int total = 0;

int n = 0;

for (int i = 0; i <= 5; i++)

{

n = fibonacci(i);

total += n;

}

cout << total << endl;

}


int fibonacci(int n)

{

if (n == 1 || n == 2)

return 1;

else if (n == 0)

return 0;

else

return fibonacci(n - 1) + fibonacci(n - 2);

}

'Programing > Algorithm' 카테고리의 다른 글

프로젝트 오일러 10번  (0) 2015.07.29
프로젝트 오일러 9번  (0) 2015.04.25
순환/재귀 팩토리알 구현  (0) 2015.04.06
3개의 숫자를 내림차순으로 정렬  (0) 2015.04.06
프로젝트 오일러 7번  (0) 2015.02.10
Posted by kimmayer


#include <stdio.h>


int factorial(int x);

int main()

{

    printf("input the number\n");

    int size;

    scanf("%d", &size);

    

    int total = 1;

    for(int i = size; i>1; i--)

        total *= i;

    

    printf("%d recursive factorial is %d \n", size, factorial(size));

    printf("%d iterative factorial is %d \n", size, total);

}


int factorial(int x){

    if (x>1)

        return x * factorial(x-1);

    else return x;

}

'Programing > Algorithm' 카테고리의 다른 글

프로젝트 오일러 9번  (0) 2015.04.25
Recursive Fibonacci  (0) 2015.04.06
3개의 숫자를 내림차순으로 정렬  (0) 2015.04.06
프로젝트 오일러 7번  (0) 2015.02.10
프로젝트 오일러 6번  (0) 2015.02.10
Posted by kimmayer


#include <stdio.h>

void sort(int *x, int *y, int *z);


int main()

{

    int x=4, y=11, z=8;

    sort(&x, &y, &z);

    printf("%d %d %d\n",x,y,z);

}



void sort(int *x, int *y, int *z){

    int temp;

    if(*x < *y){

        temp = *x;

        *x = *y;

        *y = temp;

        sort(x, y, z);

    }

    else if(*y < *z){

        temp = *y;

        *y = *z;

        *z = temp;

        sort(x, y, z);

    }

    else if(*x < *z){

        temp = *x;

        *x = *z;

        *z = temp;

        sort(x, y, z);

    }

}



'Programing > Algorithm' 카테고리의 다른 글

Recursive Fibonacci  (0) 2015.04.06
순환/재귀 팩토리알 구현  (0) 2015.04.06
프로젝트 오일러 7번  (0) 2015.02.10
프로젝트 오일러 6번  (0) 2015.02.10
프로젝트 오일러 5번  (0) 2015.02.10
Posted by kimmayer

2015. 3. 31. 18:47 Programing/OS

스케쥴러

스케쥴러

.프로세스 스케쥴러는 이용 가능한 프로세스를 실행 시키기 위해서 선택한다

->프로세스가 가장 효율적이고 CPU를 몽땅 사용할 수 있도록 CPU를 선택

.스케쥴링 큐는 대체적으로 링크드 리스트를 사용한다

.long term scheduler는 해당 알고리즘에 따라서 메모리에 올릴지 결정한다

->cpu의 상태로는 new에서 ready로 가는 것을 승인한다

.short term scheduler는 닥치고 메모리에 바로바로 올려서 실행시키는거

->cpu의 상태로는 ready에서 running으로 가는 상태로 전이

.long term schedouler는 자주 쓰이지 않는다.

.context switch는 cpu를 프로세스의 현재 상태를 저장 시키고 다른 프로세스를 복구시켜서 바꾸는거임

.context switch의 속도는 하드웨어 지원에 높은 의지를 한다.

.프로세스가 새로운 프로세스를 생성시킨다면 이는 tree같이 생겼다

.프로세스가 새로운 프로세스를 만들 때 가능한 상황들

-> 부모는 자식과 함께 계속해서 실행한다.

-> 자식들이 종료될 때 까지 부모는 계속해서 기다린다.

.프로세스의 주소 공간에서 일어날 수 있는 일들

-> 자식 프로세스는 부모프로세스의 복제

-> 자식 프로세스는 새로운 프로그램을 복제한 공간(메모리)에 넣는다

.fork 시스템의 프로세스 상태

-> fork가 되면 부모는 wait상태가 되고 자식은 exec()나 등등 일처리를 함

-> 자식 프로세서가 exit가 되면 부모 프로세서에서 기다리고 있다가 resume

.프로세서를 죽일려면  exit() 시스템 콜을 이용한다



'Programing > OS' 카테고리의 다른 글

Process의 실행 관련  (0) 2015.03.31
프로세스의 개념  (0) 2015.03.31
Thread 생성 방법  (0) 2015.03.31
Posted by kimmayer

.스레드: 싱글 스레드는 한타임에 하나의 일만 가능, 

현재 프로세스는 멀티플 스래드를 가지는 프로세스를 허가해옴, PCB에선 이제 각 스레드의 정보까지 가지고 있음


.프로세스는 잡큐에 잡을 넣는다(큐에 넣는다고 생각하면 됨)


.프로세스에서 프로세스로 스위치 순서

-> P0이 실행중

->인터럽트 혹은 시스템콜(이때 P0은 IDLE상태)

->PCB0에 상태를 저장

->PCB1로 부터 상태로드(이때 P1은 실행중)

->그러다가 중간에 또 인터럽트 혹은 시스템콜

->PCB1에 상태를 저장(이 때 P1은 IDLE상태)

->PCB0로 부터 상태로드(이때 P0은 실행중)



'Programing > OS' 카테고리의 다른 글

스케쥴러  (0) 2015.03.31
프로세스의 개념  (0) 2015.03.31
Thread 생성 방법  (0) 2015.03.31
Posted by kimmayer

.잡과 프로세스는 같은 말이라고 생각하면 된다 job=process

.프로그램 카운터=다음에 실행할 명령어가 저장되어 있는 곳

.프로세스는 또 전역변수와 같은 데이터 섹션 그리고 펑션 파라미터, 리턴 주소, 지역 변수를 포함하는 일시점 데이터를 포함하는 프로세스 스택을 포함한다 -> 프로세스가 결국 프로세스 스택을 가지고 있다는 얘기

.또 프로세스는 프로세스가 실행중일때 동적으로 할당 될 메모리를 포함하는 힙을 가지고있다


.프로세스 상태

new: 프로세스가 생성됨

running: 실행중

waiting: 프로세스가 사건이 발생할 동안 대기중

ready: 프로세스가 프로세서에 임명되기를 기다림

terminated: 프로세스가 실행에서 끝남


.프로세스 컨트롤 블록: 운영체제 안에서 프로세스는 PCB로 인해서 표현되어진다


.프로세스 컨트롤 블록

1. 프로세스상태: 뉴, 러닝, 웨이팅, 레디, 터미네이티드와 같은 상태를 표시함

2. 프로그램 카운터: 프로세스를 위한 다음 실행 지시의 주소를 가리킴

3. CPU 레지스터: CPU레지스터는 컴퓨터 아키텍처에 의해 다양한 수와 종류가 있다. 그것들은 가산기, 인덱스 레지스터, 스택 포인터, 그리고 일반적 목적의 레지스터 그리고 상태 코드 정보를 포함한다. 프로그램 카운터와 같이 상태 표시는 반드시 인터럽트가 발생하면 상태를 저장시킨다.

4. CPU 스케쥴링 정보: 이 정보는 (큐에 스케쥴링하는 정보를 포함한) 프로세스의 우선순위 포인터와 다른 스케쥴링 파라미터가 있다

5. 메모리 관리 정보: 이 정보는  운영체제에서 사용되는 메모리 시스템에 관한 정보가 포함되어 있을거다.

6. ACCOUNTING INFORMAITON: 이 정보는 CPU의 양을 포함한, 실시간 사용량, 타임 리미트, 답의 개수, 프로세스의 개수들을 가지고있다.

7. I/O STATUS INFORMAITON: 이 정보는 프로세스에 할당 되어진 I/O디바이스의 리스트를 포함한다.



'Programing > OS' 카테고리의 다른 글

스케쥴러  (0) 2015.03.31
Process의 실행 관련  (0) 2015.03.31
Thread 생성 방법  (0) 2015.03.31
Posted by kimmayer

2015. 3. 31. 16:02 Programing/OS

Thread 생성 방법

1. UNIX와 LINUX 계열은 pthread를 이용한다.

#include <ptrhread.h> 를 통해 헤더파일울 인클루딩


2. WIN32 Threads

Pthread와 비슷한 라이브러리를 사용해서 생성


3. JAVA Threads

Runnable 인터페이스를 implements 하여 사용한다

public interface Runnable

{

public abstract void run();

}

'Programing > OS' 카테고리의 다른 글

스케쥴러  (0) 2015.03.31
Process의 실행 관련  (0) 2015.03.31
프로세스의 개념  (0) 2015.03.31
Posted by kimmayer
이전버튼 1 2 3 4 5 6 이전버튼

블로그 이미지
IT 기술들 정리, 독후감을 주로 남깁니다!
kimmayer

공지사항

Yesterday
Today
Total

달력

 « |  » 2024.4
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함