Posts [OS] 프로세스의 이해 (공룡책)
Post
Cancel

[OS] 프로세스의 이해 (공룡책)

프로세스의 이해

3.1 Process Concept

프로세스

  • 실행 중인 프로그램
  • OS에서 작업의 단위가 프로세스다
  • 하나의 프로세스가 실행되기 위해서는 자원이 필요하다.
    • cpu time
    • memory
    • files
    • and I/O devices

메모리 레이아웃

  • Text section : 실행코드
  • Data section : 전역변수
  • Heap section : 동적 메모리들
  • Stack section : function parameters, return address , 지역변수

프로세스의 생명주기

  • New: 프로세스가 생성됨
  • Running: 명령어가 실행된다. CPU에 명령어를 로드해서 실행하는 상태.
  • Waiting : 프로세스가 어떤 이벤트가 일어나기를 기다리는 상태 ( ex. I/O completion) 다른 프로세스를 기다리는 상태.
  • Ready : 프로세스가 프로세서에게 할당되기를 기다리는 상태
  • Terminated: 프로세스가 실행을 끝난 상태 (ex. exit() )

프로세스의이해 (4)

→ 러닝 중에 os가 할일 있으면 waiting queue에서 대기하다가 i/o가 끝나면 ready 큐로 들어가고 다시 running 으로!

PCB(Process Control Block) or TCB(Task Control Block)

  • 각 프로세스가 가져야할 정보를 PCB에 저장
  • PCB에 가져아할 정보들
    • process state
    • program counter : 메모리에 있는 명령어를 fetch 할때 pc의 번지의 메모리를 가져오는 것
    • CPU registers
    • CPU-scheduling information
    • Memory-management information
    • Accounting information
    • I/O status information

Single thread of execution

  • 프로세스는 싱글 스레드를 실행을 수행하는 프로그램이다.
  • 프로세스 한개 내에서도 여러개의 스레드가 실행되어야 할 필요가 있었다.
  • 그래서 ‘Thread’ 란 개념이 나옴

3.2 Process Scheduling

multiprograming의 목적

  • 동시에 여러 프로세스를 실행시켜보자
  • CPU 사용 효율을 maximize 해보자.

time sharing의 목적

  • CPU core를 프로세스 간에 자주 switch 해서
  • 유저가 각각의 프로그램을 실행중에 계속 interact 하기 위해서

Queueing Diagram

프로세스의이해 (1)

Context Switch

  • 프로세스가 사용되고 있는 상태를 context라 할 수 있는데.
  • interrupt가 일어날때, 시스템이 현재 실행되고있는 프로세스의 contex를 저장하고 나중에 ready queue에 있다가 다시 실행될때 해당 context를 사용한다.
  • 즉, CPU core를 다른 프로세스에게 넘겨주는 것인데,
    • 현재 프로세스의 스테이트를 저장하고
    • 새로운 프로세스의 state를 restore(보관) 하는 것이다.

3.3 Operations on Processes

프로세스가 새로운 프로세스를 생성 (fork)

  • creating process : a parent process
  • newly created process : a child process

프로세스의이해 (2)

실행의 두가지 가능성

  • 부모 자식 concurrent하게 둘다 계속 실행
  • 자식이 계속 실행되는 동안 부모가 wait 상태가 되는것

address-space 두가지 가능성

  • The child process is a duplicate of the parent process
  • The child process has a new program loaded into it

프로세스의이해 (3)

프로세스 종료

  • 마지막 문장을 실행하면 끝!
  • 강제로 끝내고 싶을때는 exit()
  • OS 입장에서는 메모리를 해제하고 reclaims 회수~!

Zombie and Orphan

  • zombie process : 부모 프로세스는 있는데 신경을 안쓰고 부모는 부모일을 계속 해버리는것.
  • orphan process : 부모 프로세스가 wait()를 호출하지 않고 종료해버림
  • demon process, background process 할때 많이 사용한다.
This post is licensed under CC BY 4.0 by the author.

[백준] #17779 게리맨더링2 Python (파이썬)

[Network] HTTP 리퀘스트 메시지

Loading comments from Disqus ...