일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Reentrant
- Heap영역
- 프로세스 상태 전이도
- Process Control Block
- 모니터(Monitor)
- 임계 구역
- 은행원 알고리즘
- 방금 그 곡
- 유저 모드
- 문맥 교환
- Light Weight Process
- 프로세스 제어 블록
- 동기 비동기
- Activity
- 경량 프로세스
- 스레드 동기화
- Multi-level Queue
- 블로킹 논블로킹
- 유저 모드의 동기화
- Non-Preemptive
- 커널 모드
- The Banker's Algorithm
- 커널 모드의 동기화
- 스레드
- Stack영역
- 교착 상태
- 인터락 함수
- The DIning Philosopher Problem
- 프로세스
- 뮤텍스(Mutex)
목록컴퓨터과학/운영체제 (23)
Blog For Me
Race Condition 프로세스들이나 스레드들이 공유 자원에 대해 경쟁 상태에 있는 것을 의미한다. 다시 말해서, 여러 프로세스들과 스레드들이 공유 자원에 동시에 접근할 때, 접근 타이밍과 순서가 얽혀서 의도한 결과가 달라지는 데이터 일관성을 해칠 수 있는 상태에 이르게 될 수 있다. 예를 들어, 5의 값을 가지고 있는 공유 자원인 count가 있고, 이 자원에 동시에 접근하는 스레드 A, B가 있다. 여기서 A는 count++를 수행하고, B는 count--를 수행한다. 스레드 A는 내부적으로 이러한 작업을 수행한다. register1 = count register1 = register1 + 1 count = register1 한편, 스레드 B는 내부적으로 이러한 작업을 수행한다. register2..
동기와 비동기 동기(Synchronous, 동시에 발생) 동시에 일어난다는 의미이다. 즉, 요청과 그 결과가 동시에 일어난다는 약속을 의미한다. 요청을 하면, 시간이 얼마나 걸리든 상관없이 요청한 자리에서 결과가 주어져야 한다. 요청과 결과가 모두 한 자리에서 동시에 일어나게 된다. 여러 노드 사이의 작업 처리 단위를 동시에 맞추겠다는 의도를 포함하고 있다. 설계가 매우 간단하고 직관적이지만 결과가 주어질 때까지 아무것도 못하고 대기해야 한다는 단점이 존재한다. 비동기(Asynchronous, 동시에 발생하지 않는) 동시에 일어나지 않음을 의미한다. 즉, 요청과 결과가 동시에 일어나지 않는다는 약속을 의미한다. 요청한 그 자리에서 결과가 주어지지 않는다. 노드 사이의 작업 처리 단위를 동시에 맞추지 않아..
CPU 스케줄링 CPU가 하나의 프로세스 작업이 끝나면 다음 프로세스 작업을 수행해야 한다. 여기서 어떤 프로세스를 다음에 처리할 지 선택하는 알고리즘을 CPU 스케줄링 알고리즘이라 한다. 상황에 맞게 CPU를 어떤 프로세스에 배정하여 효율적으로 처리하는가가 관건이다. CPU 스케줄링은 크게 2가지로 구분되는데, Preemptive 스케줄링과 Non-Preemptive 스케줄링으로 구분된다. Preemptive vs Non-Preemptive 1. Preemptive(선점) 프로세스가 CPU를 점유하는 동안 I/O나 인터럽트가 발생하지 않았음에도 다른 프로세스가 해당 CPU를 강제로 점유할 수 있다. 프로세스가 정상적으로 수행중인 다른 프로세스나 CPU를 강제로 점유하여 실행 가능하다. 2. Non-Pr..
Stack 영역을 스레드마다 독립적으로 할당하는 이유? 우선 스택 영역은 함수 호출 시 전달되는 인자, 복귀 주소값, 그리고 함수 내에서 사용되는 지역 변수 등을 저장하는 메모리 공간이다. Stack 메모리 공간이 독립적이라는 의미는 독립적인 함수 호출이 가능하다는 의미이며, 독립적인 실행 흐름이 추가된다는 것이다. 따라서 스레드의 정의에 의거하여 독립적인 실행 흐름을 추가하기 위해 최소한의 조건으로 독립된 Stack 영역을 할당하는 것이다. PC register를 스레드마다 독립적으로 할당하는 이유? PC 값은 스레드가 명령어를 어디까지 수행했는지를 나타낸다. 스레드는 CPU를 할당받았다가 Scheduler에 의해 다시 선점당하는데, 따라서 명령어가 연속적으로 수행되지 못하고 어느 부분까지 수행했는지 ..
멀티 프로세스 멀티 프로세스는 하나의 응용 프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하게 한다. 장점 안정성이 확보된다. 여러 개의 자식 프로세스 중 하나에 문제가 발생하면 그 자식 프로세스만 죽는 것 이상으로 다른 영향이 확산되지 않는다. 별도의 동기화 작업이 필요하지 않다. 단점 Context Switching(문맥 교환) 과정에서 오버헤드가 발생할 가능성이 농후하다. 프로세스는 각 독립된 메모리 영역을 할당받았기 때문에 공유하는 메모리가 없다. 그러므로 캐시 메모리 초기화 등의 무거운 작업이 진행되고 많은 시간이 소모되는 등의 오버헤드 발생 문제가 존재한다. 프로세스 간 통신 과정이 복잡하다. 위에서 언급했듯이, 프로세스는 각 독립된 메모리 영역을 할당받았으므로 프로..
Program(프로그램) 프로그램은 어떤 작업을 위해 실행할 수 있는 파일을 의미한다. 다시 말해서, 파일 시스템에 존재하는 실행파일이 프로그램이다. 예를 들어, 내 pc에 깔려있는 Zoom, 크롬, 한글 등의 파일들을 프로그램이라 볼 수 있다. Process(프로세스) 내 pc에 깔려있는 프로그램들을 더블 클릭하여 실행하고자 하면 운영체제는 그 프로그램을 실행시킨다. 여기서 프로그램을 실행하게 되면 CPU를 차지하면서 수행하는 수행 주체가 프로세스이다. 즉, 프로그램의 한 개의 인스턴스가 프로세스이다. 프로그램은 하나지만, 이 프로그램을 실행하는 인스턴스는 여러 개일 수 있다. 예를 들어, 인터넷 검색을 이용하기 위해 크롬 실행파일을 클릭하면 크롬 실행 창이 뜰 것이다. 여기서 크롬 창을 여러 개 만들..