1 / 71

제 2 장 프로세스 개념 및 관리

제 2 장 프로세스 개념 및 관리. OS. 운영체제. Operating Systems. 개념 작업 (job) 실행 프로그램과 이에 필요한 입력 데이터의 묶음 컴퓨터에 실행 의뢰되기 전의 상태 프로세스 (process) 커널에 등록된 작업 커널에 등록되어 커널의 관리하에 들어간 작업. 작업과 프로세스의 개념 비교. 커널. 프로그램. 등록. 컴퓨터 시스템. 데이타. 프로세스. 작업. 프로세스의 정의. 프로세스 정의 실행중인 프로그램 ( 작업 ) 커널에 등록되고 커널의 관리하에 있는 작업

Télécharger la présentation

제 2 장 프로세스 개념 및 관리

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 제2장 프로세스 개념 및 관리 OS 운영체제 Operating Systems

  2. 개념 • 작업 (job) • 실행 프로그램과 이에 필요한 입력 데이터의 묶음 • 컴퓨터에 실행 의뢰되기 전의 상태 • 프로세스 (process) • 커널에 등록된 작업 • 커널에 등록되어 커널의 관리하에 들어간 작업 작업과 프로세스의 개념 비교 커널 프로그램 등록 컴퓨터 시스템 데이타 프로세스 작업

  3. 프로세스의 정의 • 프로세스 정의 • 실행중인 프로그램 (작업) • 커널에 등록되고 커널의 관리하에 있는 작업 • 각종 자원들을 요청하고 할당받을 수 있는 개체 • PCB(프로세스 관리 블록)을 할당받은 개체 • 능동적인 개체 • 실행 중에 각종 자원을 요구, 할당, 반납하며 진행

  4. 자원의 개념 • 자원의 개념 • 커널에 의해 다른 주체(process)에게 할당 또는 반납되는 피동적인 개체 • 자원의 분류 • 기억장치, 프로세서, 하드 디스크, 자기 테이프, 단말기, 모니터, 키보드 등 하드웨어 자원 • 메시지, 시그널(signal), 화일, 각종 공유 소프트웨어 등 소프트웨어 자원

  5. 프로세스 제어 블록 (PCB) • Process Control Block • 커널 공간 (kernel space) 내에 존재 • 프로세스의 일생 동안 프로세스의 모든 정적 및 동적인 정보를 가짐 (시스템 수준 문맥) • 커널에 등록된 각 프로세스들에 대한 정보를 저장하는 영역 • 커널은 PCB를 통해 프로세스 관리 • 준비 리스트, 대기 리스트 : PCB의 리스트

  6. PCB Kernel PCB-1 PCB-2 PCB-n 각 프로세스들에 대한 상태정보 저장 P1 Pn P2 Memory

  7. PCB • PCB 내의 정보 • 프로세스 고유 번호 (PID : Process Identification Number) • 프로세스 우선순위 (priority) • 우선순위-기반 스케줄링시 필요한 정보 • 프로세스 현재 상태 (current state) • 메모리 관리 정보(Memory management information) • Base/limit registers, page tables, segment tables • I/O 상태정보(I/O status information) • List of I/O devices allocated, list of open files • 문맥 저장 영역 (context save area) • 실행중인 프로세스의 일시 중지시 레지스터 문맥의 저장 영역 • PCB 에 저장되어야 할 정보는 운영체제에 따라 서로 다름 • 커널의 PCB 영역 참조 및 갱신 속도 개선은 시스템 전체 성능에 중요함

  8. 프로세스 상태 • 프로세스 상태 • 현재 소유/요청하고 있는 자원들의 종류에 따라 구분 프로세스 상태의 종류 및 특성 상 태 특 성 활동 상태 (active, swapped-in) 실행 상태 (running) 프로세서를 할당받은 상태 기억장치를 할당받은 상태 준비 상태 (ready) 필요한 자원을 모두 소유하고 프로세서를 요청하고 있는 상태 대기 상태 (blocked, asleep) 프로세서외 다른 자원도 없는 상태 지연 상태 (suspended, swapped-out) 지연 준비 상태 (suspended ready) 프로세서를 요청하고 있는 상태 기억장치를 잃은 상태 지연 대기 상태 (suspended blocked) 프로세서외 다른 자원도 없는 상태

  9. terminated running exit dispatch (schedule) sleep (block) timerrunout (preemption) ready asleep (blocked) wakeup swap-in (resume) swap-in (resume) created (active) (suspended) swap-out (suspend) swap-out (suspend) suspended ready suspended blocked wakeup 프로세스 상태전이도

  10. 프로세스 상태 • 생성 상태(created state) • 사용자가 요청한 작업이 커널에 등록되고 • PCB가 할당되어 • 새로운 프로세스가 만들어지는 상태 • 일시적으로 거쳐가는 상태 • 커널 • 기억장치 공간 검사 • 준비 상태 또는 지연 준비 상태로 전이시킴

  11. 프로세스 상태 • 준비 상태(ready state) • 프로세스가 필요한 모든 자원을 할당받고 프로세서를 할당받기 위해 기다리고 있는 상태 • 프로세서만 할당받으면 즉시 실행 가능한 상태 • 디스패치(dispatch) 또는 스케줄(schedule) • 준비 상태에서 실행 상태로의 전이

  12. 프로세스 상태 • 실행 상태 (running state) • 프로세서에 의해 실행되고 있는 상태 • 프로세스가 원하는 모든 자원(프로세서까지)을 소유한 상태 • 타임 슬라이스를 소진하거나, 입출력 요구 등을 하여 CPU를 자진 반납할 때까지 실행 상태 • 선점(preemption) • 실행중인 프로세스가 프로세서 시간 할당량(time quantum, time slice) 종료, 우선순위 등으로 인하여 자신에게 할당된 프로세서를 반납해야 하는 경우 준비 상태로 전이 • 블럭(block/sleep) • 프로세스가 실행 중 자원을 요청하거나 기타 다른 이유로 system call을 하는 경우 대기 상태로 전이

  13. 사용자 모드 실행(user mode running) : 사용자나 라이브러리 코드가 실행되고 있는 상태 • 커널 모드 실행(kernel mode running 또는 system mode running) : 프로세스가 시스템 호출을 하거나 인터럽트 발생으로 커널 내부로 진입하여 커널의 코드부분이 실행되는 상태 • 사용자 모드 • 특수 레지스터에 CPU의 모드가 사용자 모드임이 표시됨 • 다른 사용자 영역에의 침입이나 특권 명령어 및 자원의 무단 사용을 막기 위해 보호 하드웨어가 작동됨 • 커널 모드 • 입출력 장치나 자원 관리와 관계된 특권 명령어 (privileged instruction) 실행 가능 • 보호 하드웨어 통과

  14. 프로세스 상태 • 대기 상태 (blocked/asleep state) • 프로세스가 프로세서 외의 특정 자원을 요청하고 이를 할당받을 때까지 기다리고 있는 상태 • 입출력 요구, 사건 발생 대기 중에는 CPU가 필요 없음. CPU 반납 후 사건 발생 시까지 대기 • 대기 상태 중에도 I/O는 진행될 수 있음 CPU와 I/O를 overlap 할 수 있는 기반이 됨 • system call  SVC(Supervisor Call) • 커널은 프로세스의 요청을 받기 위한 system call interface를 제공 • wakeup • 프로세스가 요청한 자원을 할당받는 등의 event가 발생하면 다시 준비 상태로 전이

  15. 프로세스 상태 • 지연 상태 (suspended state) • 프로세스 생성 후 기억 장치의 양이 부족한 경우 • 지연 준비 상태 (suspended ready state) • 준비 상태의 프로세스가 기억장치 잃은 경우 • 지연 대기 상태 (suspended asleep state) • 대기 상태에서 기억장치를 잃는 경우 • 활동 상태의 프로세스가 기억장치를 잃게 되는 이유 • 커널에 의해 선택되는 경우: 시스템 기능 이상, 시스템 과부하 • 프로세스 스스로 기억장치를 반납하는 경우: 실행 도중 프로그램의 의심스런 부분 확인 • swap-out(suspend) • 프로세스가 기억장치를 잃는 경우 • swap-in(resume) • 프로세스에게 기억장치가 할당되는 경우

  16. 프로세스 상태 • 종료 상태 (terminated/zombie state) • 프로세스의 실행이 완료되어 • 모든 자원들을 반납하고 • 커널 공간 내에 PCB 등의 프로세스 관리 정보만이 남아 있는 상태

  17. 프로세스의 상태 전이 타임 슬라이스 소진 비자발적 문맥 교환 작업 종료 신규 스케줄러 준비 실행 CPU 스케줄러 입출력 요구, 동기화 대기 등 자발적 문맥 교환 입출력 완료 등 사건 발생 대기

  18. Scheduling Queues • Ready queue • 준비 상태의 프로세스들의 공통점 • 프로세서 외의 모든 자원을 확보한 상태로 프로세서 요청 중임 • 준비-큐(ready queue), 준비-리스트(ready list) • 프로세스 스케줄링(process scheduling) • 프로세서 가용시, 준비 리스트로부터 한 프로세스를 디스패치함 준비 리스트 running dispatch (schedule) sleep (block) timerrunout (preemption) ready asleep wakeup P1 P2 P3 ready list

  19. running dispatch (schedule) sleep (block) timerrunout (preemption) ready asleep wakeup P11 P12 P13 P21 P22 blocked list Pk1 Pk2 Pk3 Scheduling Queues • Block queue • 대기 상태의 프로세스 큐 • 각 프로세스가 요구한 자원의 종류에 따라 분류 가능 • 대기-리스트(block list), 대기-큐(block queue) • 각 자원의 종류별 관리 • 큐의 개수  커널이 관리하는 자원의 종류의 수 대기 리스트

  20. Thread 개념 • Thread 정의 • Lightweight process(LWP:경량 프로세스) • CPU 스케줄의 단위 • 구성 • Thread ID • Program counter • Register set • Stack • 같은 프로세스에 속한 모든 thread들은 코드, 데이터, 파일 등의 자원을 공유한다 • 응용분야: web server, RPC server, web browser • 전통적인 기존 process : single thread of control

  21. Thread 개념 모든 thread들에게 공유되는 항목 각 thread마다 독립적으로 할당되는 항목

  22. Single/Multi-threaded processes code data files code data files registers stack registers registers registers stack stack stack thread 단일 thread 다중 thread

  23. Three processes each with one thread One process with three threads

  24. Thread 개념 • 이점 • Responsiveness(응답성) • Resource sharing(자원공유) • Economy(경제성) • Utilization of multiprocessor architectures (다중처리기 구조의 활용)

  25. A word processor with three threads

  26. A multithreaded Web server

  27. While (1) { clientFd = accept(serverFd, clientSockAddrPtr, &clientLen); // if (fork() == 0) // { writeRecipe(clientFd); close(clientFd); // exit(0); // } // else // close(clientFd); } //clone(writeRecipe2, child_stack, CLONE_VM|CLONE_FILES, arg);

  28. Implementing Threads in User Space A user-level threads package

  29. Implementing Threads in the Kernel A threads package managed by the kernel

  30. Hybrid Implementations Multiplexing user-level threads onto kernel- level threads

  31. Pthread example(1) #include <stdio.h> #include <pthread.h> void consumer (void);   // thread function prototype char buffer[n]; int n, in = 0, out = 0; int main () {         char nextp; int i;    pthread_t tid; pthread_create (&tid, NULL, consumer,NULL); // consumer thread 의 생성 // main thread는 producer의 역할을 한다.    // consumer thread와 병행으로 수행된다.    for (i = 0; i < 500; i++) {                                     produce an item in nextp           while ( (in+1) % n == out) ;  // 대기 loop       buffer[in] = nextp; in++;    in %= n;    } pthread_join (tid); }

  32. Circular Buffer Pthread example(2) void consumer(void) {    char nextc;    for (i = 0; i < 500; i++) {          while (in == out) ;  // 대기 loop         nextc = buff[out];         out++;  out %= n;            ...         consume the item in nextc;     } } Producer Process Consumer Process Producer Process

  33. 인터럽트 처리 및 문맥 교환 • 인터럽트 개념 • unexpected event • 인터럽트의 일반적인 종류 • 입출력 인터럽트 (I/O interrupt) • 클럭 인터럽트 (clock interrupt) • 콘솔 인터럽트 (console interrupt) • 프로세스간 통신 인터럽트 (interprocess communication interrupt) • 시스템 호출 인터럽트 (system call interrupt, SVC interrupt) • 프로그램 오류 인터럽트 (program check interrupt) • 하드웨어 검사 인터럽트 (machine check interrupt)

  34. 인터럽트 처리 과정 인터럽트 발생 프로세스 중단 인터럽트 처리 (interrupt handling) 인터럽트 발생 장소, 원인 파악 인터럽트 서비스 할 것인지 결정 인터럽트 서비스 루틴 (interrupt service routine) 호출 • 커널 : 인터럽트 발생시 항상 개입하여 인터럽트의 처리 과정 및 인터럽트 서비스 과정을 제어함

  35. 인터럽트 처리 과정 Kernel Interrupt handler ISR-1 Interrupt handling ISR-2 프로세서 Interrupt service Pi ISR-n PCBi PCBj Context saving 인터럽트 발생 Context restoring 주기억장치

  36. 문맥 보존 및 문맥 교환 • 문맥(context)의 의미 • 특정 프로세스와 관련된 정보들의 총집합 • 프로세스의 실행 중단시 보존되고, 속개시 다시 원상 복구되어 야 하는 프로세스의 실행을 위한 모든 정보 • context saving • 실행중인 프로세스의 레지스터 문맥 보존을 위하여 저장하는 일 • context restoring • 기존에 저장되었던 문맥을 프로세서로 다시 이동시키는 일 • context switching • 실행 상태의 프로세스를 다른 프로세스로 교체하기 위하여 그들의 문맥을 각각 save하고 restore하는 일

  37. 프로세스 문맥의 구성 사용자 수준 문맥 (user-level context) • 텍스트 (text) 영역 • 자료 (data) 영역 • 스택 (stack) 영역 시스템 수준 문맥 (system-level context) • CPU 내의 각종 범용 및 특수 레지스터의 내용 (Program counter register 포함) • 프로세스의 현재의 각종 자원 사용 정보 • 기타 커널의 프로세스 관리 정보

  38. 문맥 교환(context switching) • 시분할 기반의 스케줄링에 의한 CPU 선점이나, 프로세스 스스로 입출력 요청에 의해 CPU를 반납할 때, CPU는 다른 프로세스에게 할당된다. • 이때, 실행이 정지되는 프로세스의 문맥은 보존되고, 새로 실행되는 프로세스의 문맥이 활성화된다. • 사용자 수준 문맥은 메모리에 남아 있으나, 레지스터의 내용들은 추후의 복구를 위해 저장되고, 새로운 문맥이 적재된다.

  39. Registers 범용 registers Program Counter Stack Pointer, 기타 문맥 교환 save restore 실행 속개 프로세스의 문맥 정보 실행 중단 프로세스의 문맥 정보

  40. UNIX KERNEL • 5 - 10 % of total UNIX OS • memory 상주 - 90% C - 10% Assembly 효율성, 하드웨어 제어부분 • 3 부분 • 프로세스 관리 • 파일 시스템 • I/O 시스템 • 2 modes of machine operations • kernel mode • user mode • for protection (memory space, privilegedinstruction 등)

  41. UNIX KERNEL • 모드 전환 user's source program : " read next word from file X into variable y " object program : 시스템 호출을 위한 매개변수 준비 인터럽트 실행 CPU : save state vector(문맥) CPU mode ← kernel mode로 전환 인터럽트 서비스 루틴으로 이동 OS : (interrupt handler 는 커널 영역) interrupt 원인 파악 (system call, illegal code, address fault,....) 해당 kernel procedure로 이동 | system call service | OS가 CPU mode ← user mode로 전환 restore state vector(문맥) Now, back to user program.

  42. UNIX PROCESS MANAGEMENT • PCB(process control block) • In UNIX, PCB is divided into 3 parts • u • proc • text • All in the kernel address space • used by kernel for system call services

More Related