Abstraction and Decomposition


  • Complexity 문제 해결
    - Abstraction + Decomposition = Layered Architecture

     - API (Application Programming Interface) : Layer(계층)와 Layer 사이의 통신을 위해 정의 된 호출 규약 (system call 등)

  • Layering Principle
    - 위의 계층은 아래 계층이 제공하는 기능(API)만을 사용할 수 있으며 반대의 경우는 발생하지 않아야 한다.


Process Creation and Termination


  • 일반적인 Process 생성 순서
    1. OS는 Code를 Code Segment에 저장
    2. OS는 전역 변수를 Data 영역에 저장
    3. 초기화된 Stack과 Heap 생성
        ( http://winwoo.tistory.com/18 ' Process 초기화 '참고 )
    4. Process의 정보를 담은 PCB를 malloc 시킴
    5. 만들어진 PCB를 Ready Queue에 Add

  • 유닉스(Unix)계열의 경우 Process 생성 방법
    1. System Boot 시 0번(첫번째) Process만 일반적인 process 생성 방식으로 생성
    2. 이후 모든 Process는 'Cloning'방법으로 생성
        -ex) system Call : fork();

  • Cloning Process 생성 방법
    - Parent Process : Process Cloning을 초래하는 기존의(첫번째) Process
    - child Process : Parent Process로 부터 만들어지는 새로운 Process
    - fork() : Parent Process가 Child Process를 생성하기 위해 System call 함수
    - fork() logic
       
    1. OS가 현재 fork()를 호출한 Parent Process 수행 중단
        2. Parent Process의 Context 스냅샷 저장
        3. 저장한 스냅샷 그대로 Copy
        4. Child Process 생성 완료
            -> 단, PID(Process Id) 는 다름
    -fork()의 단점 : Parent Process와 다른 형태의 Process는 생성할 수 없다.
    -fork() 보완 : fork() 이후 exec() 호출
    -exec()
    : fork()를 이용해 copy한 process에 File System에 있는 Process Data를 Override 시킴
        -> 이미 생성된 Copy Process의 내용을 무시하기 때문에 좋지 않은         logic
    -wait() : 생성한 Child Process의 Id를 받아 Child Process가 종료 될 때 까지 Parent Process를 기다리게 함
    -exit() : Process를 종료한다. 종료 시 Code, resource, data structure등 모두 날라가지만, exit Status라는 자료구조는 가지고 있다.
    (이후 Process는 zombi State가 된다.)



  • Zombi State
    -exit() 이후에 Parent Process가 자신의 exit status를 읽어가기를 기다리는 Process의 상태


  • Shell 또는 CLI(Command Line Interrupt)
    -사용자가 입력한 명령어를 입력으로 받아들여 새로운 Process를 수행시키는 프로그램


  • COW(Copy on Write)
    - fork()시 바로 Override 되는 단점 보완
    - Process context를 fork()시점에 복사하지 않고, Data Segment에 새 값이 쓰여질 때 복사하는 기법


'프로그래밍 > 운영체제' 카테고리의 다른 글

CPU Scheduling  (0) 2016.10.15
MultiThreading  (0) 2016.10.13
Context Switching(1)  (0) 2016.10.11
Process Scheduling  (0) 2016.10.09
Process Concept  (0) 2016.10.09

Process Concept


  • Process : OS에서 프로그램을 수행시키는 기본 주체

- Runtime System의 수행 주체

- CPU나 다른 자원을 할당 받는 주체

- Process는 OS에서 가장 중요한 단위


  • Decomposition

- 복잡한 문제를 단순한 여러 개의 문제로 나누어 처리하는 방법론


  • Program과 Process의 차이

- Program : 저장매체에 저장된 수동적인 Code Sequence ( 수동적 )

- Process : Program을 실행할 때 일어나는 일 ( 능동적 )

(실행 시 메모리 할당 및 CPU할당 등 다양한 일을 포함)


  • Program State
    - 무언가 Program이 실행될 때 모든 Data를 말한다.
        1. Memory ( Memory Context 
            - Code : 기계어
            - Data : Program 전역 변수
            - Stack : Program 지역 변수
            - Heap : Program 동적 메모리 공간
        2. CPU ( H/W Context )
            - Register value
        3. Per - Process Kernel Info ( System Context )

  • Execution Stream
    - Process가 지금까지 수행한 모든 명령어들의 순서

  • Process 정리
    수행중인 Program -> State 필요 -> State 위에 Thread of Control
    또는 excution Stream 존재

  • Multi Programming
    - 여러개의 Active한 Process가 Memory에 올라가 있는 경우

  • Swapping ( Main Memory의 공간이 작을 때 사용 )
    - 메모리 부족문제를 해결하기 위해 CPU를 사용하지 않는 일부 Process의 데이터를 Memory에서 다른 저장 장치로 옮기고 CPU를 사용할 Process의 데이터를 Memory에 Load 한다.

  • Process Control Block (PCB)
    - OS가 가지고 있는 Process의 정보

  • Process Table
    - 여러개의 PCB를 Array로 관리

  • State Transition
    Process Life Cycle : Process가 생성되었을 때 부터 종료될 때 까지 발생하는 일련의 상태 변화

- Ready State : Active한 Process가 CPU할당을 받지 못한 상태 

(Queue를 통해 관리한다)
*Ready Queue : Ready 상태의 Process들을 관리하기 위한 Queue형태의 자료구조 -> 일반적으로 PCB들을 Linked List로 구현

- Waiting State : 여러개의 Process가 Waiting 상태일 수 있다. 단, Process마다 Waiting 이유가 다를 수 있기 때문에 OS는 Waiting 이유에 따라 별도의 Queue를 통해  Process들을 관리 한다.


*본 자료는 서울대학교 홍성수 교수님의 '운영체제' 수업을 바탕으로 개인적으로 정리하여 올립니다. 관련 이미지 자료는 홍성수 교수님 수업 PPT자료가 출처임을 알립니다. 문제 시 말씀해주시면 삭제 조치 하겠습니다. 감사합니다.

'프로그래밍 > 운영체제' 카테고리의 다른 글

MultiThreading  (0) 2016.10.13
Context Switching(2)  (0) 2016.10.11
Context Switching(1)  (0) 2016.10.11
Process Scheduling  (0) 2016.10.09
Computer Hardware  (0) 2016.10.05

+ Recent posts