프로세스와 스케줄링 알고리즘
프로세스와 스레드
프로세스란
컴퓨터에서 실행되고 있는 프로그램.
프로그램이 메모리에 올라가서 인스턴스화 된 것.
프로세스의 상태

1. 생성 상태
프로세스가 생성된 상태를 의미하며 fork() 또는 exec() 함수를 통해 생성한다.
2. 대기 상태
메모리 공간이 충분하면 메모리를 할당 받고 아니면 아닌 상태로 대기하고 있으며 CPU 스케줄러로부터 CPU 소유권이 넘어오기를 기다리는 상태다.
3. 대기 중단 상태
메모리 부족으로 일시 중단된 상태
4. 실행 상태
CPU 소유권과 메모리를 할당 받고 인스트럭션을 수행 중인 상태를 의미한다.
5. 중단 상태
어떤 이벤트가 발생한 이후 기다리며 프로세스가 차단된 상태
6. 일시 중단 상태
대기 중단과 유사하며, 중단된 상태에서 프로세스가 실행되려고 했지만 메모리 부족으로 일시 중단된 상태
7. 종료 상태
메모리와 CPU 소유권을 모두 놓고 가는 상태
프로세스 메모리 구조
프로세스 메모리 구조는 크게 스택, 힙, 데이터 영역, 코드 영역으로 나뉜다.
스택과 힙
스택은 지역 변수, 매개변수, 실행되는 함수에 의해 줄어들거나 늘어나는 메모리 영역이다.
함수가 호출될 때마다 호출될 때의 환경 등 특정 정보가 스택에 저장된다.
힙은 동적으로 할당되는 변수들을 담는다. malloc(), free() 함수를 통해 관리할 수 있으며 동적으로 관리되는 자료 구조의 경우 힙 영역을 사용한다.
데이터 영역과 코드 영역
- BSS segment
전역 변수 혹은 static, const로 선언되어 있고 0으로 초기화 또는 초기화가 어떠한 값으로도 되어 있지 않은 변수들이 이 메모리 영역에 할당된다.
- Data segment
전역 변수 또는 static cosnt로 선언되어 있고 0이 아닌 값으로 초기화된 변수가 이 메모리 영역에 할당된다.
- code segment
프로그램의 코드가 들어간다.
멀티 프로세싱
멀티 프로세스를 통해 동시에 두 가지 이상의 일을 수행할 수 있는것
하나 이상의 일을 병렬로 처리할 수 있고 특정 프로세스의 메모리, 프로세스 중 일부에 문제가 발생해도 다른 프로세스를 이용해서 처리할 수 있기 때문에 신뢰성이 높다는 강점이 있다.
- 웹 브라우저
- 브라우저 프로세스
- 주소 표시줄, 북마크 막대, 뒤/앞으로 가기 버튼 등을 담당하며 네트워크 요청이나 파일 접근과 같은 권한을 담당한다.
- 렌더러 프로세스
- 웹 사이트가 보이는 부분의 모든 것을 제어한다.
- 플러그인 프로세스
- 웹 사이트에서 사용하는 플러그인을 제어한다.
- GPU 프로세스
- GPU를 이용해서 화면을 그리는 부분을 제어한다.
- 브라우저 프로세스
- IPC
- 공유 메모리
- 여러 프로세스에 동일한 메모리 블록에 대한 접근 권한이 부여되어 프로세스가 서로 통신할 수 있도록 공유 메모리를 생성해서 통신하는 것을 말한다.
- 여러 프로세스가 하나의 메모리를 공유할 수 있다.
- 파일
- 디스크에 저장된 데이터 또는 파일 서버에서 제공한 데이터를 말한다.
- 소켓
- 동일한 컴퓨터의 다른 프로세스나 네트워크의 다른 컴퓨터로 네트워크 인터페이스를 통해 전송하는 데이터를 의미한다.
- TCP, UDP가 있다.
- 익명 파이프
- 프로세스 간에 FIFO 방식으로 읽히는 임시 공간인 파이프를 기반으로 데이터를 주고 받는다.
- 단방향 읽기 전용, 쓰기 전용 파이프를 만들어서 작동한다.
- 명명된 파이프
- 파이프 서버와 하나 이상의 클라이언트 간의 통신을 위한 명명된 단방향 또는 양방향 파이프를 말한다.
- 메시지 큐
- 메시지를 큐 데이터 구조 형태로 관리하는 것을 의미한다.
- 커널의 전역 변수 형태 등 커널에서 전역적으로 관리되며 다른 IPC 방식에 비해 사용 방법이 직관적이고 간단하다.
- 공유 메모리
교착상태
두개 이상의 프로세스들이 서로가 가진 자원을 기다리며 중단된 상태를 말한다.
교착 상태 원인
- 상호 배제
- 한 프로세스가 자원을 독점하고 있으며 다른 프로세스들은 접근이 불가하다.
- 점유 대기
- 특정 프로세스가 점유한 자원을 다른 프로세스가 요청하는 상태
- 비선점
- 다른 프로세스의 자원을 강제적으로 가져올 수 없다.
- 환형 대기
- 프로세스A는 프로세스B의 자원을 요구하고 B는 A의 자원을 요구하는 등 서로가 서로의 자원을 요구하는 상황
해결 방법
- 자원을 할당할 때 애초에 조건이 성립되지 않도록 설계한다.
- 교착 상태 가능성이 없을 때만 자원 할당되며 프로세스당 요청할 자원들의 최대치를 통해 자원 할당 가능 여부를 파악하는 ‘은행원 알고리즘’을 사용한다.
- 교착 상태가 발생하면 사이클이 있는지 찾아보고 이에 관련된 프로세스를 한개씩 지운다.
CPU 스케줄링 알고리즘
비선점형 방식
프로세스가 스스로 CPU 소유권을 포기하는 방식이며, 강제로 프로세스를 중단하지 않는다.
- FCFS(First Come First Served)
- 가장 먼저 온 것을 가장 먼저 처리하는 알고리즘
- SJF(Shortest Job First)
- 실행 시간이 가장 짧은 프로세스를 가장 먼저 실행하는 알고리즘
- 우선순위
- SJF의 경우 긴 시간을 가진 프로세스가 실행되지 않는 현상이 있는데, 이 단점을 보완하기 위해 SJF 우선순위 뿐만 아니라 FCFS를 활용하여 만들기도 한다.
- 선점형, 비선점형적인 우선순위 스케줄링 알고리즘을 말하기도 한다.
선점형 방식
지금 사용하고 있는 프로세스를 알고리즘에 의해 중단 시켜버리고 강제로 다른 프로세스에 CPU 소유권을 할당하는 방식
- 라운드 로빈
- 각 프로세스에 동일한 할당 시간을 주고 그 시간안에 끝나지 않으면 다시 준비 큐의 뒤로 가는 알고리즘이다.
- SRF(Shortest Remaining Time First)
- 중간에 더 짧은 작업이 들어오면 수행하던 프로세스를 중지하고 해당 프로세스를 수행하는 알고리즘
- 다단계 큐
- 우선순위에 따른 준비 큐를 여러개 사용하고 큐마다 라운드 로빈이나 FCFS 등 다른 스케줄링 알고리즘을 적용한 것을 말한다.
'CS > Operating System' 카테고리의 다른 글
| 운영체제와 컴퓨터의 요소 (1) | 2025.03.06 |
|---|---|
| 💻 운영체제 시작 (0) | 2025.02.11 |