Presentation is loading. Please wait.

Presentation is loading. Please wait.

제2부 프로세스 관리(Process Management)

Similar presentations


Presentation on theme: "제2부 프로세스 관리(Process Management)"— Presentation transcript:

1 제2부 프로세스 관리(Process Management)
운영체제 4장 제2부 프로세스 관리(Process Management) 프로세스 : 실행중인 프로그램, the unit of work(시스템의 작업단위) CPU time, memory, files, I/O devices -> 요구 1. user process(사용자 프로세스) - user code 실행 2. system process(시스템 프로세스) - system code 실행 프로세스 관리 user process(사용자 프로세스)와 system process(시스템 프로세스의 생성과 삭제 프로세스 스케줄링 프로세스들의 동기화 기법 지원 프로세스들의 통신 지원 프로세스들의 교착상태(deadlock)처리

2 4.1 프로세스 개념(Process Concept)
운영체제 4장 제4장 프로세스(Processes) 예전 1 program 실행 -> 오늘날 multiple program의 동시 실행 4.1 프로세스 개념(Process Concept) 용어 job : batch system task : time-sharing system process 프로세스(The Process) 프로그램 코드 + 현재 활동(Current activity) PC(Program Counter) 레지스터 값 스택(stack) -서브루틴, 매개변수, 복귀주소, 임시변수 등 데이터 부분(data section)- 전역변수 프로세스 상태(Process State) 생성(new) 수행(running) - CPU가 실행 대기(waiting) - I/O완료나 signal 기다림 준비(ready) - Processor를 받을 준비가 됨 종료(terminated) p99 그림 4.1

3 4.1 프로세스 개념(Process Concept) [cont.]
운영체제 4장 4.1 프로세스 개념(Process Concept) [cont.] 프로세스 제어 블럭(Process Control Block) 각 프로세스는 PCB로 표현됨 PCB: p100 그림 4.2 프로세스 상태: new, ready, running, waiting, halted 프로그램 카운터: next instruction의 주소 CPU레지스터들: accumulator, index register, stack pointers, 범용 registers, condition-code CPU스케줄 정보: priority, pointers to scheduling queues 메모리 관리 정보: base and limit registers, page tables, segment tables 계정 정보: time used, time limits, account numbers, job#, process# 입출력 상태 정보: I/O devices list allocated to the process, list of open files

4 4.2 프로세스 스케줄링(Process Scheduling)
운영체제 4장 4.2 프로세스 스케줄링(Process Scheduling) 스케줄링 큐(Scheduling Queues) p102 그림 4.4 job queue(작업 큐) : memory 할당 기다리는 큐(disk에서) ready queue(준비 큐) : CPU에 할당 기다리는 큐 device queue(장치 큐) : 입출력 기다리는 큐 queueing diagram(큐잉 도표) : p103 그림 4.5 스케줄러(Schedulers) 장기 스케줄러(long-term scheduler, job scheduler) pool -> memory(degree of multiprogramming) 단기 스케줄러(short-term scheduler, CPU scheduler) CPU 할당 : must be very fast 중기 스케줄러(medium-term scheduler) swapping degree of multiprogramming을 줄임 memory -> backing store

5 4.2 프로세스 스케줄링(Process Scheduling)
운영체제 4장 4.2 프로세스 스케줄링(Process Scheduling) 문맥 교환(Context Switch) CPU가 한 process에서 다른 process로 switch될 때 save the state of the old process : CPU와 메모리 상태(PCB정보) load the saved state for new process : CPU와 메모리 상태(PCB정보) pure overhead : performance bottleneck -> threads로 해결 context-switch time : microsecond address space 보존 방법 : memory 관리기법에 좌우 4.3 프로세스에 대한 오퍼레이션(Operations on Processes) 프로세스 생성(Process Creation) 프로세스 생성 시스템 호출 : fork, exec.. 부모 프로세스 자신 프로세스 : 사용 자원을 부모 프로세스의 자원(memory, files) 공유 새 프로세스 생성 후 부모는 계속 실행 모든 자식이 끝날 때 까지 기다림 : wait system call로

6 4.3 프로세스에 대한 오퍼레이션(Operations on Processes) [cont.]
운영체제 4장 4.3 프로세스에 대한 오퍼레이션(Operations on Processes) [cont.] 새 프로세스의 2모델 (자식의 주소 공간 관점에서 본) 1) 자식은 부모의 것을 복제 : fork 2) 자식은 자신의 새 프로그램을 가짐 : fork+exec군 execl : 문자형 인수 포인터들 execv : 인수배열의 포인터 char *av[3]; av[0] = “ls”; av[1] = “-l”; av[2] = (char *)0; execv(“/bin/ls”, av); Unix의 예 : 유인물 참조 1) fork : 자식 process 생성, 모든 process는 PID(Process identifier)를 가짐 2) fork + exec : 호출하는 프로세스의 기억장소에 새 프로그램 load

7 4.3 프로세스에 대한 오퍼레이션(Operations on Processes) [cont.]
운영체제 4장 4.3 프로세스에 대한 오퍼레이션(Operations on Processes) [cont.] 프로세스 종료(Process Termination) exit 시스템 종료 계산 결과는 부모에게 Return 메모리(물리적/가상적), 오픈한 화일, I/O버퍼를 OS에게 돌려줌 abort 시스템 호출 부모만 호출(그렇지 않으면 서로 죽이는 일 생김) 실행 종료 이유 자식이 할당된 자원을 초과 사용할 때 자식의 task가 더 이상 필요 없을 때 부모가 종료될 때 DEC VMS 또는 Unix 계단식(cascading) 종료 부모 종료 -> OS가 모든 자식 종료 (예) Unix exit system call로 프로세스 종료 wait system call : return값 = 종료하는 자식의 pid wait(&status) status :자식이 exit으로 종료될 때의 상태정보 (하위 8bits : 0(정상종료 경우), 상위 8bits : exit status)

8 4.4 프로세스 협조(Cooperation Processes)
운영체제 4장 4.4 프로세스 협조(Cooperation Processes) 프로세스 협조하는 이유 정보 공유 (information sharing) 계산 속도 증가 (computation speedup) : parallel computing으로 모듈화(modularity) 편이성(convenience) : parallel computing으로 프로세스 협조 예 : 생산자-소비자(producer-consumer)문제 compiler : assembly code 생산 assembler : assembly code 소비, object code 생산 loader : object code 소비 생산자와 소비자가 동시에 수행되려면 => buffer가 필요(동시 수행을 위해) => 생산자와 소비자의 동기화 필요(생산되지 않은 자료 소비하지 않게) 생산자-소비자 문제 종류 1. 무한 버퍼(unbounded-buffer) 생산자-소비자 문제 생산자는 항상 생산, 소비자는 소비할 자료를 기다릴 수도 2. 유한 버퍼(bounded-buffer) 생산자-소비자 문제 버퍼가 꽉 차 있으면 생산자가 대기, 버퍼가 비어 있으면 소비자가 대기

9 4.4 프로세스 협조(Cooperation Processes) [cont.]
운영체제 4장 4.4 프로세스 협조(Cooperation Processes) [cont.] 유한 버퍼 생산자-소비자 문제 -> 스레드(LWP)로 하면 효과적 공유-메모리를 이용한 해결책 var n; type item = ..; var buffer: array [0..n-1] of item; in, out; 0..n-1; in<- next free position out<- first full position empty : in = out full : in + 1 mod n = out 생산자 프로세스 repeat ... produce an item in nextp while in+1 mod n = out do no-op; buffer[in] := nextp; in := in + 1 mod n; until false;

10 4.4 프로세스 협조(Cooperation Processes) [cont.]
운영체제 4장 4.4 프로세스 협조(Cooperation Processes) [cont.] 소비자 프로세스 repeat while in = out do no-op; nextc := buffer[out]; out := out + 1 mod n; ... Consume the item in nextc until false; 버퍼에 최대 n-1 개 항목만 채울 수 있음 -> n 개 항목 다 채우는 방법(6장) in : next free position out : first full position empty, full 구별 위해 마지막 넣지 않음 만일 마지막 넣는 다면 in = out

11 4.5 스레드(Threads) [cont.] 프로세스 = 자원 + PC
운영체제 4장 4.5 스레드(Threads) [cont.] 프로세스 = 자원 + PC 스레드 : 새 PC (a thread of control)로 같은 address space를 실행하는 fork와 유사 경량 프로세스(LWP; lightweight process) = 스레드 CPU를 이용하는 기본 단위 PC, 레지스터 세트, 스택 영역을 가짐 스레드들은 서로 task(code section, data section, OS resources-open files, signals)를 공유 (p113 그림 4.8) 중량 프로세스(heavyweight process) = 1 thread를 가진 task 비교 경량 프로세스 : CPU switching, thread context switch 레지스터 세트 교환만 중량 프로세스 : process switching, context switching 메모리 관련 작업도(virtual memory page table 변경 등)

12 4.5 스레드(Threads) [cont.] 제어 스레드의 특성 (예1) 화일 서버 (예2) 생산자 소비자 문제
운영체제 4장 4.5 스레드(Threads) [cont.] 제어 다중 스레드 제어(multiple-thread control) 자 신의 PC, stack, 비독립적(no protection) 다중 프로세스 제어(multiple-process control) 자신의 PC, stack, address space, 독립적(protection) 스레드의 특성 CPU공유 준비, 수행, 대기상태 자식 thread생성 block (예1) 화일 서버 단일 프로세스 모델 : 첫번 process가 disk access 위해 block되면 다른 file server process 수행 불가 다중 스레드 테스크 모델 : 같은 task의 다른 server thread 수행 가능 (예2) 생산자 소비자 문제 2 threads 로 구현하면 좋음(better if on 2 processors)

13 4.5 스레드(Threads) [cont.] 스레드의 커널 지원 kernel 자체(system call 수행 방법)
운영체제 4장 4.5 스레드(Threads) [cont.] 스레드의 커널 지원 1. kernel supported(커널지원) : Mash, OS/2 : system calls 공평한 스케줄링(fair scheduling) 스위칭 시간이 김(switching is time consuming) : interrupt 처리 때문 2. library supported(라이브러리 지원) : Andrew(CMU) : library calls 불공평한 스케줄링(unfair scheduling) 스위칭이 빠름(switching is fast) 사용자 수준 스레드가 system call을 수행할 경우 system call 완료까지 다른 모든 스레드들은 대기해야 함 3. hybrid approach(혼합 접근) : Solaris 2 kernel 자체(system call 수행 방법) single tasking : Unix kernel : 공유 자료 접근 동기화 불필요 multi tasking : Mach kernel : 스레드들은 동기적임(threads are synchronous) 다른 스레드가 제어를 넘겨준 다음에만 수행 가능(공유 데이타 변경 중에는 제어를 넘겨주지 않음) (cf) asynchronous system인 경우 : locking mechanism필요

14 4.5 스레드(Threads) [cont.] (예2):솔라리스(Solaris) 2.x Solaris 2가 지원
운영체제 4장 4.5 스레드(Threads) [cont.] (예2):솔라리스(Solaris) 2.x SunOS Release 4.x - Solaris 1.x SunOS Release 5.x - Solaris 2.x Solaris 2가 지원 kernel수준과 user수준에서 스레드 지원 symmetric multiprocessing(대칭적 다중 프로세싱) 각 process가 OS가짐 Master-slave의 반대 real-time scheduling(실시간 스케줄링) 스레드들 : LWP(Light Weight Processes) = a virtual CPU user-level stack과 PC switching(linking with thread)이 빠르다. 문맥 교환 없음. intermediate-level = LWP PCB, register, 계정정보, 메모리 정보 비교적 느리다. kernel-level(스케줄링 대상) 약간의 자료구조와stack switching이 비교적 빠르다.

15 4.5 스레드(Threads) [cont.] p116 그림 Figure 4.9 Solaris 2의 스레드
운영체제 4장 4.5 스레드(Threads) [cont.] p116 그림 Figure 4.9 Solaris 2의 스레드 Many LWP, many CPU N user-level thread <-> l LWP 1 LWP <-> 1 Kernel-level thread = 1 system call N Kernel-level thread <-> 1 CPU (예) 5개 화일 읽기 -> 5 LWP필요 각 화일 읽기는 Kernel 안에서 I/O완료를 기다려야 함 Solaris 2에서 한 task는 한 I/O완료를 기다리는 동안 block될 필요가 없다. 어떤 작업의 한 LWP(kernel thread)가 I/O 완료를 기다리게 되더라도 CPU는 그 작업의 다른 LWP(kernel thread)로 이동하여 작업 수행을 계속한다. 참조 Solaris 2.x : System Administrator’s Guide, Threads Primer: A Guide to Multithreaded Programming, Bil Lewis, Daniel J.Berg, Prentice Hall, 1996.

16 4.6 프로세스간 통신(Interprocess Communication)
운영체제 4장 4.6 프로세스간 통신(Interprocess Communication) 통신 방식 <- 한 시스템에서 둘 다 사용해도 됨 공유 메모리 방식(shared-memory) 응용 프로그램 작성자가 응용 레벨에서 통신기능 제공 (예)유한버퍼 생산자-소비자 문제 version 1 메시지 전달 방식(message-passing) IPC(interprocess-communication)기능 이용 : OS가 통신기능 제공 (예)유한 버퍼 생산자-소비자 문제 version 2 IPC기본 구조(Basic Structure) IPC기능의 2연산 send (message) receive(message) 프로세스 P와 Q가 통신함 -> 통신선이 전재 링크 공유 메모리 bus network send/receive연산

17 4.6 프로세스간 통신(Interprocess Communication) [cont.]
운영체제 4장 4.6 프로세스간 통신(Interprocess Communication) [cont.] 메시지 시스템을 구현하는 기법들 직접(direct) 또는 간접 통신 대칭(symmetric) 또는 비대칭(symmetric) 통신 자동(automatic) 또는 명시적(explicit) 버퍼링 복사(copy)에 의한 전송 또는 참고(reference)에 의한 전송 고정길이(fixed-sized) 또는 가변길이(variable-sized) 메시지 명칭 부착(Naming) 1) 직접통신(Direct Communication) 대칭적 통신 : 두 프로세스(sender/receiver)가 상대의 이름을 호출 Send(P, message) : 프로세스 P에게 메시지 보냄 Receive(Q, message) : 프로세스 Q로부터 메시지 받음 비대칭적 통신 : sender만 receiver 호출 Receive(id, message) : 임의의 프로세스로부터 메시지 받음 id = 메시지를 보낸 프로세스의 이름으로 설정됨 직접통신의 단점 프로세스 이름 바뀌면 전부 고쳐야(limited modularity)

18 4.6 프로세스간 통신(Interprocess Communication) [cont.]
운영체제 4장 4.6 프로세스간 통신(Interprocess Communication) [cont.] (직접 통신의 예) 생산자/소비자 문제 생산자(producer) repeat ... produce an item in nextp send(consumer, nextp); until false; 소비자(consumer) receive(producer, nextc); consume the item in nextc

19 4.6 프로세스간 통신(Interprocess Communication) [cont.]
운영체제 4장 4.6 프로세스간 통신(Interprocess Communication) [cont.] 2) 간접통신(Indirect Communication) mailbox(ports) 통해 통신 send(A, message) : mailbox A에 메시지 보냄 receive(A, message) : mailbox로부터 메시지 받음 mailbox의 구현 프로세스가 mailbox소유 OS가 mailbox소유 버퍼링(Buffering) 링크의 메시지 보유 용량 Zero capacity : rendez-vous(no buffering)…동기적 통신 Bounded capacity : 유한 길이 큐 이용…자동 버퍼링 Unbounded capacity : 무한 길이 큐 이용…자동 버퍼링

20 4.6 프로세스간 통신(Interprocess Communication) [cont.]
운영체제 4장 4.6 프로세스간 통신(Interprocess Communication) [cont.] 비동기적 통신(asynchronous communication) : 자동 버퍼링 경우 보통 보낸 메시지 도착 여부 모름 꼭 알아야 할 경우 : 명시적 동기 P : send(Q, message); receive(Q, message); Q : receive(P, message); send(P, “acknowledgment”); 특별한 경우 메시지 보낸 프로세스는 절대로 지연되지 않음 보낸 메시지 미처 받기 전에 새 메시지 보내면 이전 메시지 유실될 수 있음 메시지 유실 방지 위해 복잡한 명시적 동기화 필요 메시지 보낸 프로세스는 받았다는 회신 받을 때까지 기다림 Thoth reply(P, message) 가 메시지 보낸 프로세스와 받는 프로세스의 수행 재개 동기적 통신(synchronous communication) RPC(Remote Procedure Call)로 확장 가능 sender : subroutine call -> reply올 때까지 블록 됨 receiver : 계산 결과를 reply

21 4.6 프로세스간 통신(Interprocess Communication) [cont.]
운영체제 4장 4.6 프로세스간 통신(Interprocess Communication) [cont.] 예외 조건(Exception Conditions) centralized 또는 distributed system에서 고장 발생시 오류의 회복(예외 조건) 필요 프로세스 종료(Process Terminates) P는 종료된 Q를 기다림 -> P는 블록 됨 P 종료 Q 종료 사실을 P에 알림 P가 종료된 Q에 메시지 보냄 -> Q의 reply 기다려야 할 경우 블록 됨 메시지 유실(Lost Messages) OS가 탐지 및 처리 책임 sender가 탐지 및 처리 책임 OS가 탐지, sender가 처리 (-> 12장) 훼손된 메시지(Scrambled Messages) 통신 채널의 잡음(noise) 때문 -> 보통 OS가 재전송 오류검사코드(check sums, parity, CRC)으로 조사

22 4.6 프로세스간 통신(Interprocess Communication) [cont.]
운영체제 4장 4.6 프로세스간 통신(Interprocess Communication) [cont.] 실례 : Mach 분산시스템을 위한 OS 시스템 호출, task 간 정보전달을 메시지로 port(= mailbox) task 생성 => (kernel mailbox, notify mailbox) 생성 system calls msg_send msg_receive msg_rpc (remote procedure call) port_allocate : 새 mailbox 생성, buffer size = 8, FIFO order port_status : 주어진 mailbox의 메시지 수 반환 메시지 형태 고정길이 header 메시지 길이 두 mailbox 이름(그 중 하나는 sender의 mailbox; reply 위한 return address 포함) 가 변길이 data portion: 정형화된(typed) 데이터 항목들의 리스트

23 4.6 프로세스간 통신(Interprocess Communication) [cont.]
운영체제 4장 4.6 프로세스간 통신(Interprocess Communication) [cont.] send 연산 수신 mailbox가 full이 아니면 메시지 복사 수신 mailbox가 full이면 mailbox에 빈 공간이 생길 떄까지 대기 최대 n 밀리초 대기 기다리지 않고 즉시 복귀 메시지를 임시로 cache : 메시지 하나만 OS가 보관 가능(메시지가 실제로 목표 mailbox에 들어갔을 때 reply ; only one pending message) line printer driver 등 서버 태스크 경우 receive 연산 어떤 mailbox 또는 mailbox set로부터 메시지를 읽을지를 명시햐야 함 지정된 mailbox로부터 또는 mailbox set 중 한 mailbox로부터 메시지 수신 읽을 메시지 없으면 최대 n 밀리초 대기하거나 대기하지 않음 메시지 시스템의 단점 double copy(sender -> mailbox, mailbox-> receiver) Mach는 virtural memory 기법으로 두번 복사 않음(송신 스레드와 수신 스레드를 같은 주소 공간으로 mapping 시킴)

24 4.6 프로세스간 통신(Interprocess Communication) [cont.]
운영체제 4장 4.6 프로세스간 통신(Interprocess Communication) [cont.] 실례 : Windows NT 메시지 전달 방식으로 통신 : 지역 프로시주어 호출 기능(local Procedure Call) 연결 포트(connection port)와 통신 포트(communication port) 사용 통신 작업 클라이언트가 연결 포트 객체에 대한 handle을 open 클라이언트가 연결 요청 서버는 두 개의 사적인(private) 통신 포트를 생성하고 클라이언트에게 두 표트 중 하나의 handle을 돌려줌. 클라이언트와 서버는 해당 통신 포트의 handle을 이용하여 메시지를 보내거나 응답호출(callback)을 하고 응답(reply)을 기다림 세 가지 메시지 전달 기법 포트의 메시지 큐를 중간 저장소로 이용, callback 기법 가능 공유 메모리인 섹션 객체(section object)를 이용, callback 기법 가능 quick LPC : 클라이언트가 연결 요청 후 quick LPC 지시, 서버는 클라이언트 전용 서버 스레드(dedicated server thread) 생성 연결 요청, 메시지 담을 64KB 섹션 객체, 동기화를 수행하는 한 쌍의 사건 객체(event pare object) 처리 장점 : 메시지 복사, 포트 객체 사용, 호출한 클라이언트 파악위한 overhead 제거 단점 : 다른 두 방법보다 많은 자원 사용 메시지 전달 overhead 감소위해 여러 메시지들을 한 메시지로 batch 하기도 함


Download ppt "제2부 프로세스 관리(Process Management)"

Similar presentations


Ads by Google