[운영체제(OS)] 프로세스 동기화 - (1) 프로세스 동기화 개념
2022. 2. 26. 00:16
CS/운영체제
0.🚶들어가며 프로세스 동기화에 대한 내용을 다뤄보려 합니다. 첫 번째 주제로는 동기화가 무엇인지, 동기화가 왜 필요한지, 관련 개념은 어떤 것이 있는지에 대해 소개해보도록 하겠습니다. 1.❓동기화란 무엇인가❓ 동기화 필요성에 대한 이해를 돕기 위해 한 예시를 들어보겠습니다. 동시에 실행되고 있는 두 코드가 있다고 가정해봅시다. 언뜻 보면 전혀 문제가 없어 보이는 코드입니다. 하지만 다음과 같은 순서대로 실행된다면 문제가 발생합니다. 좌측 코드 라인1 > 우측 코드 라인1 > 우측 코드 라인2 > 좌측 코드 라인2 (물약 먹는 코드 + 공격받는 코드)를 실행시켰을 시, health의 최종 값은 기존보다 40(50 - 10) 증가되어있음을 기대하는데 위와 같은 순서대로 실행된다면 health는 50이 증가..
[운영체제(OS)] CPU 스케줄링 - (2) 스케줄링 알고리즘
2022. 2. 25. 13:42
CS/운영체제
0.🚶들어가며 지난 글에서는 CPU 스케줄링이 무엇인지에 대해 알아보았습니다. 이번 글에서는 CPU 스케줄링 성능을 측정할 때 척도는 무엇이 있는지, 스케줄링 알고리즘은 어떤 것들이 있는지에 대해 알아보겠습니다. 1.⏰CPU 스케줄링 성능 척도 스케줄링 알고리즘에 대해 알아보기 전, 각 알고리즘의 성능은 어떤 기준으로 측정할 것인지에 대해 먼저 알아보겠습니다. CPU 스케줄링의 성능은 시스템 입장에서의 성능과 사용자 입장에서의 성능, 두 가지로 나누어 고려해볼 수 있습니다. 시스템 입장에서는 CPU를 쉬지 않고 최대한 많이 돌리는 것이 중요하고, 사용자 입장에서는 자신이 요청한 작업이 빨리 처리되는 것이 중요합니다. 하지만 두 입장 모두를 만족시키는 것이 쉽지 않습니다. 따라서 상황에 맞게 CPU 스케줄..
[운영체제(OS)] CPU 스케줄링 - (1) CPU 스케줄링의 개념
2022. 2. 17. 21:40
CS/운영체제
0.🚶들어가며 이전 글에서는 프로세스와 스레드에 대해 알아보았었습니다. 프로세스가 CPU에 할당을 받아야 작업을 수행한다고 했었죠. 이때 여러 프로세스 중 누가 CPU의 할당을 받을 것인지에 대한 내용을 다룬 CPU 스케줄링에 대해 글을 작성해보겠습니다. 1.⏰CPU 스케줄링이란? 이전 글에서 알아봤듯 프로세스는 생성되고 난 뒤 여러 상태를 거치게 됩니다. 운영체제의 CPU 스케줄러는 Ready 상태의 프로세스 중에서 어떤 프로세스에게 CPU를 할당할지 결정합니다. 이를 CPU 스케줄링이라 하는 것이죠. 또한 Dispatcher는 CPU 제어권을 CPU 스케줄러에 의해 선택된 프로세스에게 넘깁니다. 이를 Context Switch라고 합니다. CPU 스케줄링은 규모에 따라 장기, 중기, 단기 스케줄링으로..
[운영체제(OS)] 프로세스와 스레드 - (3) 스레드
2022. 2. 14. 20:26
CS/운영체제
0. 🚶들어가며 프로세스와 스레드 3편입니다. 이번 글에서는 프로세스와 항상 같이 나오는 개념인 스레드(Thread)에 대해 알아보겠습니다. 1. 📕스레드의 개념 1) 스레드의 정의 스레드는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위이다. 이전 글에서 살펴보았듯 CPU를 할당받은 프로세스는 작업을 수행합니다. 이때 CPU가 처리하는 작업 단위가 프로세스로부터 전달받은 스레드(lightweight process)입니다. 집을 짓는 작업을 프로세스로 비유하면 스레드는 집을 짓는 세부 작업들인 설계, 공사, 인터레어 정도로 비유할 수 있습니다. 위 글만 보면 프로세스와 스레드가 어떤 차이인지 감이 잘 오지 않습니다. 따라서 프로세스와 스레드의 차이점에 대해 더 살펴보겠습니다. 2) 프..
[운영체제(OS)] 프로세스와 스레드 - (2) 프로세스 제어 블록과 문맥 교환
2022. 2. 14. 01:36
CS/운영체제
0. 🚶들어가며 프로세스와 스레드 2편입니다. 이번 글에서는 1편에서 개념만 소개했던 프로세스 제어 블록, PCB에 대해 좀 더 알아보고 시분할 방식과 관련된 개념인 문맥 교환(Context switch)에 대해서 알아보겠습니다. 1. 📕프로세스 제어 블록과 문맥 교환 1) 프로세스 제어 블록(PCB) 프로세스 제어블록(PCB)는 CPU가 프로세스를 실행할 때 필요한 중요 정보들을 보관하는 자료구조입니다. 운영체제 커널의 Data 영역에서 관리되고 있죠. 1편에서 살펴본 바와 같이 모든 프로세스는 고유의 PCB를 가집니다. 또한 PCB는 프로세스 생성 시 만들어져 실행이 완료된 후 폐기됩니다. 그렇다면 PCB에 저장되는 정보는 무엇인지, 각 정보는 무슨 역할을 하는지에 대해서 알아보겠습니다. (1) 프로..
[운영체제(OS)] 운영체제란 무엇인가?
2022. 2. 11. 22:57
CS/운영체제
1. 운영체제란 무엇인가? 운영체제 공부를 시작하며 우선 운영체제가 무엇인지에 대한 글을 정리해보려 합니다. 운영체제는 윈도우, 맥, 안드로이드, IOS 등과 같이 실생활에서도 자주 들어볼 수 있는 단어와 밀접한 관계가 있습니다. 운영체제는 컴퓨터를 동작시키는 데 도움을 주는 소프트웨어인데 사실 운영체제가 없어도 컴퓨터를 동작시킬 수 있습니다. 하지만 컴퓨터 사용자가 하드웨어 자체를 다룬다는 것은 쉽지 않은 일이기 때문에 기본적으로 컴퓨터에 운영체제를 탑재하는 것입니다. 운영체제는 컴퓨터 하드웨어 바로 윗단에 설치되는 소프트웨어로 하드웨어 + 운영체제를 컴퓨터 시스템이라고도 부릅니다. 우리가 사용하는 각종 소프트웨어들은 바로 이 컴퓨터 시스템 위에서 작동하게 됩니다. 2. 운영체제의 역할은 무엇인가? 운..