분류 전체보기 1383

19_스케줄링 알고리즘 - 우선순위, 라운드 로빈, 다단계 큐, 다단계 피드백큐 스케줄링

19_스케줄링 알고리즘 우선순위, 라운드 로빈, 다단계 큐, 다단계 피드백큐 스케줄링 [우선순위 스케줄링(Priority Scheduling)] 최단 우선 작업 스케줄링(SJF)은 우선 순위 스케줄링 알고리즘의 특별한 경우다. 우선순위가 각 프로세스들에게 연관되어 있으며 CPU는 가장 높은 우선순위를 가진 프로세스에게 할당 된다. 우선 순위가 같은 프로세스들은 선입 선처리(FCFS)순서로 스케줄 된다. SJF 알고리즘은 우선순위(p)가 예상되는 다음 CPU 버스트의 역인 안순한 우선 순위 알고리즘이다. CPU 버스트가 클수록 우선순위가 낮으면 그 역도 성립한다. 아래 표와 그림은 프로세스 순서대로 도착한 순서와 버스트 시간 그리고 프로세스 되는 스케줄링 간트 차트 이다. 프로세스버스트 시간우선순위P110..

18_스케줄링 알고리즘 -선입 선처리 스케줄링과 최단 작업 우선 스케줄링

18_스케줄링 알고리즘 선입 선처리 스케줄링과 최단 작업 우선 스케줄링 CPU 스케줄링은 준비 완료 큐에 있는 어느 프로세스에게 CPU를 할당할 것인지를 결정하는 문제를 다룬다. [선입 선처리 스케줄링(First-Come, First-Served Scheduling)] 선입 선처리(FCFS)스케줄링은 CPU를 먼저 요청하는 프로세스가 CPU를 먼저 할당 받는 방식으로 선입 선처리 정책의 구현은 선입선출(FIFO) 큐로 쉽게 관리 할 수 있다. 요청 및 처리 순서는 다음과 같다 프로세스가 준비 완료 큐에 진입 프로세스의 프로세스 제어블록(PCB)을 큐의 끝에 연결 CPU가 유휴 상태가 되면 준비 완료 큐의 앞 부분에 있는 프로세스에게 할당 실행 상태의 프로세스는 준비 완료 큐에서 제거 선입 선처리 정책은 ..

17_CPU 스케줄링 기본 개념

17_CPU 스케줄링 기본 개념 CPU 스케줄링(scheduling)은 다중 프로그램 운영체제의 기본 이다. 운영체제는 CPU를 프로세스들 간에 교환 함으로써 컴퓨터를 보다 생산적으로 만든다. 스레드를 지원하는 운영체제에서는 프로세스가 아니라 커널 수준의 스레드를 스케줄링 한다. 그러나 프로세스 스케줄링과 스레드 스케줄링 용어는 상호 교환적으로 사용 되며 일반적인 스케줄링을 논의하는 경우에는 프로세스 스케줄링을 사용하고 스레드에 국한된 개념을 가리키는 경우에 스레드 스케줄링이라는 용어를 사용한다. 단일 처리기 시스템에서는 한 순간에 오직 하나의 프로세스만이 실행 될 수 있다. 다중 프로그래밍의 목적은 CPU 이용률을 최대화 하기 위해 항상 실행중인 프로세스를 가지게 하는데 있다. 스케줄링은 운영체제의 기..

16_스레드 이슈(Threading Issues)

16_스레드 이슈(Threading Issues) 다중 스레드 프로그램에서 발생하는 이슈에 대해서 알아 보자. [Fork() 및 Exec() 시스템 호출] 다중 스레드 프로그램에서는 fork()와 exec() 시스템 호출의 의미가 달라질 수 있다. 한 프로그램의 스레드가 fork()를 호출하면 새로운 프로세스는 모든 스레드를 복사 또는 fork()시스템을 호출한 스레드만 복제 한다. Exec() 시스템을 호출하면 exec()의 매개변수로 지정된 프로그램이 모든 스레드를 포함한 전체 프로세스를 대체 시킨다. fork()를 부르자마자 다시 exec()을 부른다면 exec()에서 지정한 프로그램이 곧 모든 것을 다시 대체할 것이기 때문에 모든 스레드를 복제해서 만들어주는 것은 불필요하다. Fork() 후 ex..

15_스레드 라이브러리

15_스레드 라이브러리 스레드 라이브러리(thread library)는 프로그래머에게 스레드를 생성하고 관리하기 위한 API를 제공한다. 스레드 라이브러리를 구현하는데는 두 가지 방법이 있다. 커널의 지원 없이 완전히 사용자 공간에만 라이브러리를 제공하는 것. 라이브러리를 위한 모든 코드와 자료구조는 사용자 공간에 존재한다. 라이브러리의 함수를 호출하는 것은 시스템 호출이 아닌 사용자 공간의 지역 함수를 호출하게 된다. 운영체제에 의해 지원되는 커널 수준의 라이브러리를 구현. 라이브러리를 위한 코드와 자료구조는 커널 공간에 존재한다. 라이브러리 API를 호출하는 것은 커널 시스템 호출을 사용한다. [Pthread] Pthread는 POSIX(IEEE 10031.1c)가 스레드 생성과 동기화를 위한 제정한..

14_스레드 개념과 다중 스레드

14_스레드 개념과 다중 스레드 스레드(thread)는 CPU 이용의 기본 단위다. 스레드는 스레드 ID, 프로그램 카운터, 레지스터 집합, 스택 으로 구성 된다. 스레드는 같은 프로세스에 속한 다른 스레드와 코드, 데이터 섹션, 열린 파일이나 신호와 같은 운영체제 자원들을 공유 한다. 프로세스에 하나의 제어 모델이 있으면 단일 스레드 이며, 프로세스가 다수의 제어 스레드를 가진다면 다중 스레드 모델이다. [다중 스레드의 장점] 다중 스레드 프로그래밍을 장점을 크게 네 가지로 분류하면 다음과 같다. 응답성(Responsivness) : 응용 프로그램의 일부분이 봉쇄 되거나 긴 작업을 수행하는 경우에도 프로그램의 수행이 계속 되는 것을 허용 함으로써 사용자에 대한 응답성을 증가 시킨다. 자원 공유(Reso..

13_클라이언트 서버 환경에서 통신

13_클라이언트 서버 환경에서 통신 클라이언트 서버 환경의 통신에서도 메시지 전달 기법을 이용하여 통신 한다. 통신 방식에서 3가지 유형에 대해서 살펴 보자. [소캣(Socket)] 소켓(socket)은 통신의 극점(EndPoint)를 뜻한다. 두 프로세스가 네트워크 상에서 통신을 하려면 양 프로세스마다 하나씩 총 두 개의 소켓이 필요하다. 클라이언트 프로세스가 연결을 요청하면 호스트 컴퓨터가 포트 번호를 부여한다. 이때 포트 번호는 1024(0~1024는 시스템 예약)보다 큰 임의의 정수가 사용된다. 모든 연결은 유일 해야 한다. 소켓을 이용한 통신은 분산된 프로세스들 간에 널리 사용되고 효율적이기는 하지만 너무 저수준이다. 우선 소켓은 쓰레드들 간에 구조화되지 않은 바이트 스트림만을 통신하도록 하기 ..

12_프로세스간 통신

12_프로세스간 통신 운영체제 내에서 수행되는 병행 프로세스가 시스템에서 실행중인 다른 프로세스들에 영향을 주거나 받지 않는다면 독립적인 프로세스라 하며 영향을 준다면 협력적인 프로세스라 한다. 프로세스 협력을 허용하는 이유는 다음과 같다. 정보 공유(Information Sharing) : 여러 사용자가 동일한 정보를 병행적으로 접근할 수 있는 환경을 제공해야 한다.(공유 파일 등) 계산 가속화(Computation Speed UP) : 특정 작업을 서브 태스크로 나누어 각각 다른 서브 태스크들과 병렬로 실행 되어야 한다. 모듈성(Modularity) : 시스템 기능을 별도의 프로세스들 또는 쓰레드 들로 나누어 모듈식 형태로 시스템을 구성하기를 원할 수 있다. 편의성(Convenience) : 개별 사..

11_프로세스에 대한 연산

11_프로세스에 대한 연산 대부분 시스템 내의 프로세스들은 병행 수행 될 수 있으며 반드시 동적으로 생성되고 제거되어야 한다. 프로세스는 실행 도중에 프로세스 생성 시스템 호출을 통해서 여러 개의 새로운 프로세스들을 생성 할 수 있다. 생성하는 프로세스를 부모 프로세스라 하며 생성된 새로운 프로세스들은 자식 프로세스라 부른다. 새로운 프로세스들은 다시 새로운 프로세스들을 생성할 수 있으며 그 결과 트리 구조의 프로세스가 형성 된다. 대부분의 운영체제들은 프로세스 식별자(PID)에 의해 프로세스를 구분하며 식별자는 정수 이다. 프로세스가 새로운 프로세스를 생성할 때 실행과 관련하여 두 가지 가능성이 있다. 부모가 계속해서 자식과 병렬로 실행 된다. 부모가 모든 자식 또는 일부 자식이 끝날 때까지 기다린다...

10_프로세스 스케줄링

10_프로세스 스케줄링 다중 프로그래밍의 목적은 CPU의 사용을 최대화 화기 위하여 항상 어떤 프로세스가 실행 되도록 하는데 있다. 시분할의 목적은 각 프로그램이 실행 되는 동안 사용자가 상호 작용할 수 있도록 프로세스들 사이에서 빈번하게 CPU를 교체하는 것이다. 위 두 개의 목적을 달성하기 위해 프로세스 스케줄러가 존재한다. 프로세스 스케줄러는 CPU에서 수행 가능한 여러 프로세스들 중에서 하나의 프로세스를 선택 한다. 단일 처리기 시스템에서는 실행 중인 프로세스가 한 개 이상 있을 수 없다. 만약 단일 처리기에 여러 프로세스들이 있다면 프로세스들은 CPU가 작업이 끝날 때까지 대기하여야 한다. 프로세스가 시스템에 들어오면 작업 큐에 놓여 진다.(메인 메모리 위치) 이 큐는 시스템 안의 모든 프로세스..