[CS][OS] 프로세스와 스레드

  • 현대의 운영체제는 시분할 방식을 기본으로 사용
  • 프로그램, PCB, 프로세스

PCB, 컨텍스트 스위칭

PCB의 구성 및 기능

  • 포인터: 준비 및 대기 상태는 큐로 구성 → PCB들끼리 연결되어 다음에 실행되어야할 프로세스를 알려줌
  • 프로세스 상태: 현재 프로세스가 어느 상태에 있는지 알려줌
  • 프로세스 구분자 정보(PID)
  • 프로세스 우선순위: 대기큐에 있지만, 그 안에서도 우선순위가 설정되어있고 그에 따른 실행이 일어남
  • 레지스터 정보: 프로세스가 실행 중에 사용하던 레지스터 정보 등 저장
  • 메모리 관리 정보: 프로세스가 메모리의 어디에 있는지 등의 위치 정보 등
  • 할당된 자원 정보: 입출력이 필요시 접근할 파일 정보 등
  • 계정 정보: 계정 번호, CPU 할당 시간, CPU 사용 시간 정보 등
  • 부모 프로세스 정보, 자식 프로세스 정보 (PPID, CPID)
  • 프로세스의 상태

    • 키워드: 생성, 준비, 실행, 완료, 디스패치, 타임아웃, 인터럽트, 대기, 보류, 활성상태

컨텍스트 스위칭

  • 정의: CPU 차지하던 프로세스 나가고 새로운프로세스 받아들이는 과정
  • 일어나는 경우: 타임슬라이스 다 했을 때, 인터럽트 걸렸을 때 등
  • 각각의 프로세스에 해당하는 PCB에 프로세스 상태 정보를 저장하고, 다시 실행시 가져옴

프로세스의 연산

프로세스의 구조

- 키워드: 코드, 데이터, 스택, 힙

프로세스 생성, 전환

  • fork()시스템호출

    • 실행 중인 프로세스를 복제 → 실행 중 프로세스: 새로 생긴 프로세스 = 부모: 자식 관계 & PID, PPID, CPID 변경
    • 자원 상속으로 빠르게 프로세스 생성하고, 부모-자식 관계로 시스템 관리 효율적(프로세스 종료시에 메모리 정리 등을 부모프로세스가 관리)
    • 요즘에는 fork() 시스템호출 대신 멀티스레딩으로 주로 사용
  • exec() 시스템호출

    • 프로세스 구조는 그대로 재활용하고, 새로운 코드와 데이터로 바꾸고 스택영역 리셋

스레드

  • 프로세스 VS 스레드
  • 멀티태스킹: 운영체제가 CPU에 작업 줄 때, 시분할로 배분하는 것. 즉 fork()시스템호출로 여러 개의 프로세스 만듦

  • 멀티스레딩: 멀티태스킹의 단점인 중복되는 정적영역 없이, 한 프로세스에서 여러 스레드를 사용

    • 장점: 코드, 전역 데이터, 파일 등의 공통자원은 공유해서 자원의 낭비 막고 효율성 높인다
    • 단점: 한 스레드에 문제 생기면 다른 스레드에도 문제 → 프로세스에 영향

출처

  • 조성호, 쉽게 배우는 운영체제(한빛아카데미, 2022)

Written by
Sunmin
어제보다 나은 오늘을 만들기 위해 배우고, 기록하고, 회고합니다. Maker. Reader. Realistic optimist.