SniKuz
스니커즈 정리공간
SniKuz
  • 정리공간 (116)
    • 강의 (35)
      • OS (12)
      • 컴퓨터구조 (5)
      • 컴퓨터네트워크 (6)
      • 컴퓨터 그래픽스 (12)
    • 프로젝트 (8)
      • 애니메이션 스티커(Android) (1)
      • 2023GMTK (1)
      • OTT 게임 (2)
      • 3D MORPG (4)
    • Unity (3)
      • Memory (3)
    • 디자인패턴 (8)
    • 활동 정리 (4)
    • 알고리즘 (48)
    • 기타기록 (6)
      • 여행,음식 (4)
      • 잡다지식 (2)

블로그 메뉴

  • ✨ 깃허브

공지사항

인기 글

태그

  • ISTQB
  • 니
  • programmers

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
SniKuz

스니커즈 정리공간

프로세스(3장)시험 요약
강의/OS

프로세스(3장)시험 요약

2023. 4. 20. 18:27

 


 

○ 프로세스 - 실행중인 프로그램. Program = passive, Process = active


○메모리 영역

Stack : 일시적 데이터(함수 parameter, return addresses, 지역 변수) 영역. [코드를 토대로 컴파일 중 크기가 확정됨] 
Heap : run time 중 동적 할당된 변수 영역
BSS : 초기화 되지 않은 global, static 변수 영역
Data : 초기화 된 global, static 변수 
Text (= Code) : 프로그램에 코드가 들어가는 영역

○ Diagram of Process State, Process Life Cycle

New : process created
Running : Instructions are being executed (CPU 사용 중)
Waiting : 어떤 이벤트 발생하여 프로세스 대기 중 (CPU 사용 불가. I/O, event 등)
Ready : 이벤트 해결 후 프로세스 실행 대기 중 (CPU 사용 중 X, 하지만 넘겨주면 Running 가능)
Terminated : 프로세스 종료

○ PCB (Process Control Block)
Process 정보 구조체. Process State, Process ID, Program Counter, Register 등등 여러 정보 관리.
참고 : https://en.wikipedia.org/wiki/Process_control_block

○ Context Switch 
한 프로세스에서 다른 프로세스로 CPU switch하는 과정

○ Process Creation
프로세스의 생성 과정 : 프로세스가 부모(Parent)가 되어 자신을 복제한다. 복제된 자신을 자식(Child)프로세스라고 하고, 별도의 메모리 공간을 가지고 Child는 자신의 PID가 0으로 확인된다.
[ PID == 0 : child process | PID > 0 : parent process | PID < 0 : err]
자연스럽게 트리의 형태를 띄게 됨.



* process를 만드는 fork()와 스레드를 만드는 pthread_create()모두 내부적으로는 System Call Clone()을 사용한다.
fork() -> 별도의 메모리 공간, 다른 PID
pthread_create() -> 공유 메모리 공간, 같은 PID
clone() -> 공유 메모리 공간, 다른 PID
대략적인 생각으로는 Clone 후 내부 flag, 값등을 바꿔서 process, thread로 나뉘며, Linux에서는 그렇기에 현재 프로세스와 스레드 구분이 없이 모두 Task로 취급.

○ exec() : 프로세스를 메모리 내 다른 프로그램으로 덮어 씌우는 System Call.
주로 fork() 이후, 복제한 Child Process에 exec()계열 system call로 다른 프로그램으로 덮어 씌어 탈바꿈 한다.
exec에 추가로 붙는 옵션들의 뜻:
l : 인수가 문자열이다. >> execl(const char *path, const char *arg1, *arg2, ...*argn)
v : 인수가 문자열 배열이다 >> execv(const char *path, char *const argv[])
p : path가 PATH 절대 경로내 file이다. >> execvp(const char *file, char * const argv[])

○Process Termination
어떤 OS는 부모가 종료됐을 때, child가 존재하는 것을 허락하지 않는 경우가 있다. 이 때 부모 아래 모든 프로세스(자식, 손자 ,...) 를 같이 종료하는걸 cascading termination이라한다. 우리가 쓰는 윈도우, linux, mac 등은 허락한다.

Zombie Process : 부모가 waiting 하지 않는 프로세스. (did not invoke waiting) 모든걸 반납하고 프로세스 테이블에 이름만 남아있으며, OS가 좀비를 입양하는 방법도 있다.
Orphan Process : 부모가 종료된 프로세스.


○ Interprocesss communication (IPC)
프로세스는 independent(독립적) 이거나 cooperating(협력적)일거다.
프로세스가 서로 협력한다면, 각 프로세스에 서로 영향을 끼칠 수 있어야한다, 즉 통신이 되어야 한다.
프로세스간 통신(IPC)에 2가지 모델
1. Shared memory : Process A, B가 공유된 메모리 공간을 가지고 사용. 게시판 느낌
2. Message Passing : Process A, B가 메시지를 보내는 형태. 우편 느낌

○ Message Passing에 Synchronization
Blocking : synchronous. 메시지가 정상적으로 송신/수신 될때까지 Block됨. 어떤 상태던 기다리면 blocking
Non-blocking : asynchronous. buffer로 메시지를 담고 대기.
Q. buffer가 꽉찼는데 메시지가 들어온다면? A. 버리면 blocking, 안버리면 non-blocking..??

○ Pipes
두 프로세스 통신을 위한 통로.
1. Ordinary Pipe : 부모-자식 관계를 가지는 파이프. pipe를 가지고 한쪽은 write-end, 다른 쪽은 read-end로 통신.
윈도우에서는 anonymous pipes라고 칭함
2. Named Pipes : 부모-자식 관계가 아닌 파이프. Communication is bidirectional.

 

프로세스.pdf
0.71MB

저작자표시 (새창열림)

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

OS - Thread  (0) 2023.06.29
OS - Processes  (0) 2023.06.27
OS - Structure  (0) 2023.06.26
CPU스케줄링(5장) - 시험 요약  (0) 2023.04.20
스레드 (4장)-시험 요약  (1) 2023.04.20
    '강의/OS' 카테고리의 다른 글
    • OS - Processes
    • OS - Structure
    • CPU스케줄링(5장) - 시험 요약
    • 스레드 (4장)-시험 요약
    SniKuz
    SniKuz
    게임과 관련된 개발, 디자인 등등 + 일상공간

    티스토리툴바