본문 바로가기

전체 글

(231)
[OS] Critical-Section Problem : Software Solution 📁 Critical Secltion Problem n개의 프로세스들이 각자 자신의 critical section을 가지고 있다. critical section의 코드를 실행하며 서로 경쟁적으로 접근하는 상황에서 어떤 한 프로세스가 critical section을 실행하고 있으면 다른 프로세스들은 자신의 critical section을 실행하면 안된다, 즉 같은 데이터는 동시에 접근하지 못하도록 하라는 문제가 critical section problem이다. 📁 Critical Section Problem 해결책 다음 세가지 요구사항을 모두 만족해야 한다. 1. mutual exclusion 어느 순간에 하나의 프로세스만이 자원에 접근할 수 있고, 그동안에는 다른 프로세스들이 접근하지 못하도록 하는 성질...
[OS] Race Condition race condition은 cpu가 여러개인 컴퓨터 뿐만아니라 한개인 컴퓨터에서도 발생함. Producer/Consumer Problem이란 프로듀서 프로세스 P 여러개와 컨슈머 프로세스 C 여러개가 함께 작업을 하는 상황에서 발생하는 Race condition을 설명하는 문제. 아래 그림과 같음. 그림에서는 P가 여러개 C가 한개지만 P가 한개이거나 C가 여러개여도 됨. producer process는 정보를 생산하는 일을 하고, consumer process는 생산된 정보를 소비해서 다른 처리를 하는 일을 함. 이때 producer가 생산한 정보를 consumer에게 전달하기 위에 IPC를 이용한다고 가정해보자. 이 문제에서는 shared memory를 사용한다. 각 producer는 정보를 생산해..
[OS] 프로세스들 간의 충돌 프로세스간의 충돌이라고 했는데, 정확한 표현은 다수의 쓰레드들이 실행되며 충돌하는 것. 싱글쓰레드 프로세스인 경우 편의상 쓰레드를 프로세스라고 부르기에 프로세스간 충돌이라고 표현할 수도 있는것. (해당 포스팅에서 프로세스는 '쓰레드'를 뜻한다고 봐도 무방함.) 컴퓨터 시스템 안에서는 다수의 프로세스와 쓰레드들이 실행되기 때문에 다양한 작업들이 진행되고, 그에 따라서 여러 이벤트들이 발생한다. 즉 다양한 이벤트들이 동시다발적(concurrent)하게 생기는 것. 이런 이벤트는 보통 컴퓨터 자원(resource)를 대상으로, 프로세스나 쓰레드들 사이에서 서로 다른 작업이 concurrent하게 발생하기 때문에 작업들 간 충돌이 발생할 수 있는것. 이런 충돌이 일어나지 않도록, 충돌 때문..
[OS] OS Architecture : Monolithic Kernel, Microkernel
[OS] Components of OS
[OS] Timesharing
[OS] 유니프로그래밍과 멀티프로그래밍
[OS] OS란?