[운영체제] Process, Thread

함민혁·2023년 7월 25일
0

cs면접준비

목록 보기
6/43

운영체제란?

하드웨어를 관리하고, 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 응용 프로그램과 하드웨어 간의 인터페이스로써 다른 응용 프로그램이 유용한 작업을 할 수 있도록 환경을 제공해줌
즉, 운영체제는 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 시스템 소프트웨어라고 할 수 있음
ex> Windows, Linux, UNIX, MS-DOS

운영체제의 역할

  1. 프로세스 관리
  2. 저장장치 관리
  3. 네트워킹
  4. 사용자 관리
  5. 디바이스 드라이버

프로세스

프로세스: 운영체제로부터 자원을 할당받은 작업의 단위

프로세스는 프로그램을 실행시켜 정적인 프로그램이 동적으로 변하여 프로그램이 돌아가고 있는 상태를 말함.
즉, 컴퓨터에서 작업 중인 프로그램을 의미하는 것

모든 프로그램은 운영체제가 실행되기 위한 메모리 공간을 할당해줘야 실행될 수 있음. 그래서 프로그램을 실행하는 순간 파일은 컴퓨터 메모리에 올라가고 운영체제로부터 시스템 자원(CPU)를 할당받아 프로그램 코드를 실행시킴

프로세스 구조

code/text, data, stack, heap 영역으로 구성됨
앞 두개는 정적, 뒤 두개는 동적 영역
동적 영역 : stack, heap
정적 영역 : code/text, data
프로그램이 여러 개 실행되면 메모리에 프로세스들이 담길 주소공간이 생성되고 그 안에 code,data,stack,heap 공간이 만들어짐

프로세스 한계

과거에는 파일을 다운받으면 실행 시작부터 끝까지 프로세스 하나만 사용 -> 굉장히 오래걸림
동일한 프로그램을 여러 개의 프로세스로 만들게 되면, 그만큼 메모리 차지, CPU에서 할당받는 자원이 중복 -> 스레드 등장

스레드

스레드 : 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위

하나의 프로세스 내에서 동시에 진행되는 작업 갈래, 흐름의 단위

ex> 크롬 브라우저가 실행되면 프로세스 하나가 실행되는데 우리는 브라우저에서 파일을 다운받기도하고, 쇼핑도 하고 게임도 함.

즉, 하나의 프로세스 안에서 여러가지 작업들 흐름이 동시에 진행됨

일반적으로 하나의 프로그램은 하나 이상의 프로세스를 가지고 이쏙, 하나의 프로세스는 반드시 하나 이상의 스레드를 갖는다.

프로세스의 4가지 메모리 영역(Code, Data, Heap, Stack) 중 스레드는 Stack만 할당받아 복사하고 Code, Data, Heap은 프로세스내의 다른 스레드들과 공유

프로세스 컨텍스트 스위칭

컨텍스트 스위칭(Context Switching)은 CPU가 한 프로세스에서 다른 프로세스로 전환할 때 발생하는 일련의 과정을 말함 CPU는 한 번에 하나의 프로세스만 실행할 수 있으므로, 여러 개의 프로세스를 번갈아가며 실행하여 CPU 활용률을 높이기 위해 컨텍스트 스위칭이 필요한 것

PCB : 프로세스 스케줄링을 위해 프로세스에 관한 모든 정보 저장하는 임시 저장소

컨텍스트 스위칭 오버헤드

PCB 저장 및 복원 비용
CPU 캐시 메모리 무효화에 따른 비용
프로세스 스케줄링 비용

스레드 컨텍스트 스위칭

멀티 스레딩 환경에서 스레드 간의 실행을 전환하는 기술. 하나의 프로세스 내의 스레드들을 교환

TCB : 각 스레드마다 운영체제에서 유지하는 스레드에 대한 정보를 담고 있는 자료구조, PCB안에 들어있음. stack 및 간단한 register포인터 정보만 저장 -> 가벼움

프로세스와 스레드의 차이

프로세스는 메모리 상에서 실행중인 프로그램을 말하며, 스레드는 이 프로세스 안에서 실행되는 흐름 단위를 말한다.
프로세스는 최소 하나의 스레드를 보유하고 있으며, 각각 별도의 주소공간을 독립적으로 할당 받는다.(code, heap, stack)
스레드는 이중에 stack만 따로 할당받고 나머지 영역은 스레드끼리 서로 공유한다.

프로세스와 프로그램의 차이

프로그램은 파일이 저장 장치에 있지만 메모리에는 올라가있지 않은 상태이고, 프로세스는 메모리에 적재되고 CPU 자원을 할당받아 프로그램이 실행되고 있는 상태이다.

멀티 프로세스와 멀티 스레드의 차이


데드락이 나오는 상황

다수의 프로세스나 스레드가 서로 자원을 점유하고, 다른 프로세스나 스레드가 점유한 자원을 기다리는 상황에서 발생하는 교착 상태를 말한다. 여러 개의 스레드가 서로 대기하면서 무한정 기다리게되는 무한 루프와 같은 증상이라고 보면된다.
ex> 스레드1은 자원 A를 점유하고 있고 자원 B가 필요한데, 스레드2는 자원 B를 점유하고 있고, 자원 A가 필요함. 하지만 두 스레드 둘다 서로 빌려줄 수 없는 상황이고 계속 서로를 기다리는 상황
스레드의 특징인 공유 자원에 동시 엑세스할 때나, 멀티 프로세스 IPC 통해 공유 자원을 사용할 때 일어남.

출처 : https://inpa.tistory.com/entry/👩%E2%80%8D💻-프로세스-⚔%EF%B8%8F-쓰레드-차이#프로세스_process
https://inpa.tistory.com/entry/👩%E2%80%8D💻-multi-process-multi-thread#

profile
Born to be FE developer 🧑🏻‍💻

0개의 댓글