본문 바로가기
~ 2024.03/컴퓨터 구조 + 운영체제

[컴퓨터 구조] 프로세스와 스레드

by Monett 2024. 1. 4.
반응형

혼자 공부하는 컴퓨터 구조 + 운영체제(강민철 저, 한빛미디어)를 공부하며 내용을 정리한 글 입니다.
현재 블럭의 내용은 작성자의 의견 혹은 생각이며, 틀린 내용이 있을 수 있습니다. 지적 감사드립니다.

 

프로세스 개요

보조기억장치의 프로그램을 메모리에 적재하는 순간 프로세스가 된다.

이 과정을 프로세스가 생성된다 라고 표현한다.

 

  • 포그라운드 프로세스 : 사용자가 보는 앞에서 실행
  • 백그라운드 프로세스 : 사용자가 보지 못하는 뒤에서 실행. 유닉스에서는 데몬, 윈도우에서는 서비스라고 부른다.

모든 프로세스가 CPU를 동시에 사용할 수는 없다.

이용 시간이 끝나면(타이머 인터럽트가 발생하면) 차례를 양보해야 한다.

 

프로세스 제어 블럭 (PCB)

운영체제는 PCB를 이용해 프로세스 실행 순서와 자원을 관리한다.

PCB는 커널 영역에 생성되며, 프로세스 식별 정보가 저장된다.

 

PCB에 담기는 정보

  • 프로세스 ID (PID) : 고유 번호
  • 레지스터 값 : 이전까지 사용한 레지스터 값 ex) 프로그램 카운터 등
  • 프로세스 상태 : CPU 이용, 입출력장치 사용 여부 등
  • CPU 스케줄링 정보 : CPU를 언제 어떤 순서로 할당받을지
  • 메모리 관리 정보 : 프로세스의 메모리 주소, 한계 레지스터, 페이지 테이블 등
  • 사용한 파일과 입출력장치 목록

PCB는 프로세스 생성 시 생성되며 실행이 끝나면 폐기된다.

문맥 교환

문맥은 하나의 프로세스 수행을 재개하기 위해 기억해야할 정보이다.

문맥 교환은 문맥을 백업하고, 새 프로세스의 문맥을 복구하여 실행하는 것이다. 빠르게 번갈아가며 실행되기 때문에 동시에 실행되는 것처럼 보인다.

프로세스의 메모리 영역

TCP 스쿨(https://tcpschool.com/c/c_memory_structure)

  • 정적 할당 영역
    • 코드 영역 : 텍스트 영역이라고도 부르며, 기계어로 이루어진 명령어가 저장된다. 읽기 전용 영역이다.
    • 데이터 영역 : 프로그램이 실행되는 동안 유지할 데이터를 저장한다. ex) 전역 변수 등
  • 동적 할당 영역
    • 힙 영역 : 프로그래머가 직접 할당 가능한 공간이며, 사용한 후에 반드시 반환해야한다.
    • 스택 영역 : 데이터를 일시적으로 저장하는 공간이다. ex) 지역변수, 매개 변수 등

힙 영역은 메모리의 낮은 주소에서 높은 주소로 할당되며, 스택 영역은 높은 주소에서 낮은 주소로 할당된다.


프로세스 상태

  • 생성 상태 : new. 이제 적재된 상태.
  • 준비 상태 : ready. 실행 가능하지만 차례를 기다리는 상태.
  • 실행 상태 : running. CPU를 할당받아 실행 중인 상태. 준비 상태에서 실행 상태로 전환되는 것을 디스패치라고 한다.
  • 대기 상태 : blocked. 입출력장치를 기다리는 상태
  • 종료 상태 : terminated. 종료

 

프로세스 상태 다이어그램

프로세스 계층 구조

프로세스는 시스템 호출을 통해 다른 프로세스를 생성 가능하다.

생성된 프로세스를 자식 프로세스, 생성한 프로세스를 부모 프로세스라 한다.

 

부모 프로세스는 fork를 통해 자신의 복사본을 자식으로 생성한다.

자식은 exec를 통해 본인의 메모리 공간을 다른 프로그램으로 교체한다.

fork 후 exec를 호출하지 않는 경우도 있는데, 이는 같은 코드를 병행하며 실행된다.

 

스레드

스레드는 실행의 단위, 즉 프로세스를 구성하는 실행의 흐름 단위이다.

 

컴퓨터는 실행 과정에서 여러 프로세스가 동시에 실행될 수 있다. 이는 멀티 프로세스라고 부른다. 

하나의 프로세스가 여러 일(명령어)을 동시에 실행할 수 있는데, 이를 멀티 스레드라고 한다.

 

프로세스들은 각자의 자원을 공유하지 않지만, 스레드끼리는 같은 프로세스 내의 자원을 공유할 수 있어 협력과 통신에 유리하다.

단, 하나의 스레드에 문제가 생기면 다른 스레드도 영향을 받을 수 있다.

반응형