CS STUDY/운영체제
운영체제란(1)
cha_eyoon
2023. 12. 23. 14:03
운영체제란?
사용자와 하드웨어 사이의 인터페이스를 제공해 효율적으로 응용 프로그램이 동작하도록 지원
컴퓨터 시스템 자원을 효율적으로 관리하여 응용 프로그램이 원활하게 동작
운영체제의 역할
1. 프로세스 관리
프로세스(Process)란?
- 프로그램이 메모리에 적재된 상태, 프로그램의 인스턴스
- "운영체제에서의 하나의 작업단위"
- 메인 메모리에 할당되어 현재 실행 중인 상태인 프로그램
- 스케줄링의 대상이 되는 작업(task)

Code: 실행할 프로그램의 코드나 명령어들이 기계어 형태로 저장된 영역, CPU는 이 영역의 명령어들 하나씩 처리
Data: 코드에서 선언한 전역 변수와 정적 변수가 저장되는 영역, 프로그램이 실행되면서 할당되고 종료되면 소멸
Stack: 함수 안에서 선언된 지역변수, 매개변수, 리턴값등이 저장, 함수 호출 시 기록되고 종료되면 제거
Heap: 관리 가능한 데이터 이외의 데이터를 관리하기 위한 자유공간
스레드(Thread)란?
- 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위
- 프로세스와 다르게 스레드 간 메모리를 공유하며 작동
- 운영체제의 스케줄러에 의해 독립적으로 관리
- 하나의 프로세스는 하나 이상의 스레드 소유

운영체제의 Process 관리 방법
- 운영체제는 여러 개의 프로세스들이 동시에 동작하고, 프로세스를 실행시키는 CPU의 활용성을 최대로 하도록 지원
- 실제로는 여러 프로세스가 동시에 실행되는 것이 아니라, CPU가 아주 빠른 속도로 여러 프로세스를 번갈아가며 실행하여 동시에 실행되는 것처럼 보이게 하는 것입니다. 이것은 운영 체제의 스케줄링 알고리즘에 의해 달성됩니다.
프로세스의 생명주기(Process Lifecycle)

생성(new): 프로세스가 디스크에서 memory에 올라간 상태
준비(ready): 다른 프로세스가 CPU를 점유하고 있어, 할당을 기다리고 있는 상태
수행(running): 프로세스가 CPU를 할당 받아 작업이 실행되고 있는 상태
대기(waiting): I/O request나 이벤트가 완료까지 기다리고 있는 상태, 완료 후 ready-queue로 이동
종료(terminated): 프로세스의 명령어가 끝까지 진행되었거나 중간에 exit()이 발생하면 프로세스 종료
PCB(Process Control Block)
- 운영체제가 프로세스를 제어하기 위해 상태의 변화와 실행 치 등, 운영체제가 기억할 수 있도록 정보를 저장해 놓는 곳으로 프로세스의 모든 정보를 저장하는 구조체
- OS는 PCB를 가지고 프로세싱을 핸들링
- 프로세스의 상태 관리와 문맥 교환(Context Switching)을 위해서 필요하다.
- 프로세스가 생성될 때마다 고유의 PCB가 생성되며, 프로세스가 완료되면 PCB는 제거된다.
프로세스 스케줄링(Process Scheduling)
- 운영체제에서 한 번에 하나의 프로세스만 실행할 수 있으면 비효율적이기 때문에 프로세스를 빠르게 교체하면서 여러 프로세스가 동시에 실행되는 것처럼 보이게 한다.
- 준비(ready) 상태의 프로세스들은 PCB로 이루어진 ready-queue에 쌓이고, 다음 진행할 프로세스의 정보를 PCB에서 읽어와서 실행하는데 이때, 실행(running) 중인 프로세스가 다른 프로세스로 교체되면서 Context Switching이 발생한다.
*Context Switching 과정

1. Process P1이 실행되는 도중 인터럽트나 시스템 콜이 발생한다.
2. PCB1에 P1의 정보를 저장하고 PCB2의 상태를 불러온다.
3. Process P2를 실행한다.
4. P2가 실행되는 도중 인터럽트나 시스템 콜이 발생한다.
5. PCB2에 P2의 정보를 저장하고 PCB1의 상태를 불러온다.
6. Process P1을 실행한다.
=> 언제 발생할까?
CPU 스케줄링에 의해 할당된 작업시간이 끝나 timeout이 발생했을 때 or 프로세스의 작업이 끝났을 때
2. 저장장치 관리
- 주기억장치(Main Memory)
- 프로세스가 올라가는 공간
- 메인 CPU는 오직 메모리로부터만 명령어들을 가져올 수 있다.
- 주기억장치는 워드 단위로 CPU와 상호작용하며, Load 혹은 Store 명령어를 사용해 수행이 이루어진다.
- Load: 주기억장치 -> CPU의 레지스터
- Store: CPU의 레지스터 -> 주기억장치
- 명령이 실행되는 사이클
- 인출 단계(Fetch): CPU는 기억장치로부터 실행할 명령어를 인출하여 레지스터나 명령어 해독 단계로 가져온다.
- 해독 단계(Decode): 인출된 명령어는 CPU에 의해 해독된다.
- 피연산자 로드 단계(Operated Fetch): 명령어에 따라 필요한 데이터(피연산자)를 CPU의 레지스터로 로드한다.
- 실행 단계(Execute): 명령어에 지시된 작업(연산, 데이터 이동 등)을 CPU에서 실행한다.
- 결과 저장 단계(Write Back): 실행된 명령어로부터 얻은 결과를 CPU레지스터에서 다시 기억장치에 저장한다.
- 장단점
- 주기억장치는 모든 데이터를 영구히 저장하기에는 용량이 적다.
- 보조기억장치보다는 접근 속도가 훨씬 빠르다.
- 전원이 공급되지 않으면 내용들이 초기화되는 휘발성 저장장치이다.
- 보조기억장치
- 프로그램을 영구히 저장할 수 있는 저장 장치로써 하드디스크나 SSD(Solid State Driver)등이 있다.
- 일반적으로 프로그램들은 보조기억장치에 저장되며 그 중에서 실행을 한 프로그램이 프로세스가 되어 주기억장치에 적재되어 CPU가 처리해 프로그램이 작동한다.
- 이외에도 캐시 메모리, CD-ROM, 자기 테이프 등 다양한 저장 장치가 존재한다.
참고
[운영체제] 프로세스와 스레드
💡 프로세스와 스레드의 차이? ✅ 프로세스 : 운영체제로부터 자원을 할당받은 작업의 단위✅ 스레드 : 프로세스가 할당받은 자원을 이용하는 \*\*실행 흐름의 단위 💁 멀티스레드의 장단점 ?
velog.io
https://itnovice1.blogspot.com/2019/08/blog-post_78.html
[운영체제] 저장장치 구조(주기억장치, 가상기억장치, 보조기억장치)
[운영체제] 저장장치 구조(주기억장치, 가상기억장치, 보조기억장치) 프로세스 실행 중인 프로그램을 의미합니다. ex) 한글 프로그램을 실행 주기억장치(RAM) RAM 사진 프로세스가 올라가는 공간
itnovice1.blogspot.com
[OS] 운영체제의 프로세스 관리
운영체제의 여러 기능중에는 프로세스 관리가 있다. 이번 게시글에서는 프로세스란 무엇이며, 운영체제에서 어떻게 관리되는지 공부해보자. Process란 무엇인가? A process is a program in execution. : 프
deveun.tistory.com