[운영체제] 프로세스

이정연·2022년 12월 7일
0

ComputerScience

목록 보기
2/13

본 포스팅은 이화여자대학교 공개강의를 참조하여 제작하였습니다.

스레드

  • 스레드를 사용하면 병렬성을 높일 수 있다.
  • 동일한 일을 수행하는 다중 스레드로 높은 throughput과 성능 향상
  • 왜냐하면 하나의 스레드가 blocked 상태일 때 다른 스레드가 태스크 수행 가능

PCB 내 스레드

  • PCB에서 스레드 관련 정보를 얻기 위하여 PC와 레지스터를 참조

code/data/stack

  • 스레드는 code/data 공유
  • stack 별도 관리

Why?

  • Responsiveness

    Ex) 웹툰 감상
    웹툰 페이지를 서버에 요청 👉🏻 삽화 로딩까지 스레드 blocked 👉🏻 스레드 미존재시 삽화 렌더링까지 빈 화면 👉🏻 스레드 존재시 삽화 스레드 blocked 동안 HTML 파일 렌더링 가능(리모컨, 목차, 메뉴 등)

  • Resource Sharing

    같은 프로세스 내에서 code/data를 공유하기 때문에 메모리 효율 증가

  • Fast Context Switch

    프로세스보다 스레드 간 context switch가 더욱 빠름, 이는 overhead를 줄여줌

  • Utilization of MP processors

??? 각기 다른 프로세스에서 병렬성이 있는건 스레드 뿐만 아니라 프로세스도 마찬가지 아닌가??

프로세스

생성

  • 부모 프로세스는 여러 자식 프로세스를 낳을 수 있다. 👉🏻 트리 구조
  • 자식 프로세스는 부모 프로세스와 동일한 주소 공간을 할당
  • 각각의 자식 프로세스는 할당된 주소 공간에 원하는 프로그램을 덮어써 커스터마이징

UNIX 예시

fork(): 자식 프로세스 생성
exec(): 덮어쓰기

fork

  • 위의 소스코드 1번 지점에서 fork 발생
  • 이 때, 자식 프로세스의 실행 지점은?
  • 3번 지점부터 시작!
  • fork는 context switch를 사용하기 때문
pid
  • fork's return value
  • 부모 자식을 구분하기 위해
  • 부모 > 0, 자식 = 0

COW

Copy-on-Write

  • 운영체제에서는 보통 부모와 자원을 공유하지 않는 모델 사용
  • write 전까지 부모와 자원 공유를 하다가 write 발생 후에 부모의 code/data를 복사하여 별도의 자원 관리

대기

wait

자식 프로세스가 종료될 때까지 부모 프로세스를 blocked

  • 자식 프로세스 종료시 부모는 ready

종료

exit

  • 프로세스가 마지막 명령을 수행 후 OS에게 자원 자진 반납

abort

  • 프로세스가 외부 요인으로 인하여 강제종료
  1. 자식이 할당 자원을 넘어섬
  2. 자식에게 더 이상 태스크가 필요하지 않음.
  3. 부모가 종료됨

협력 프로세스

  • 프로세스 협력 메커니즘을 통해 하나의 프로세스가 다른 프로세스에 영향을 미칠 수 있음.

프로세스간 협력 메커니즘

IPC: Interprocess Communication

메시지 전달법

  • message passing: 커널을 통해 메시지 전달

주소 공간 공유

  • shared memory: 서로 다른 프로세스일지라도 메모리를 공유하는 메커니즘
  • 스레드: 스레드는 한 프로세스 내에서 code/data 공유

엄밀히 말하면 스레드는 프로세스가 아니기 때문에 프로세스 간 협력은 아니지만 어쨌든 CPU를 할당받는 특성에 기인하여 하나의 프로세스로 간주함

profile
0x68656C6C6F21

0개의 댓글