● 도입 - 여러 프로세스가 서로 다른 프로세스의 작업이 끝나기를 기다리다가 아무도 작업을 진행하지 못하는 상태를 교착상태라고 한다. - 교착상태는 일상생활에서도 발생할 수 있다. - 위와 같은 도로에서 차량 한 대가 꼬리 물기를 해서 교통이 마비되었다고 해보자 - 도로를 원할하게 할려면 앞에서 길을 터줘야 하는데 지금은 그 어느 차선도 이러지도 저지도 못 하는 상태이다. - 이럴때는 누군가 도로를 통제해서 해결해 줘야한다. ● 교착상태 - 교착상태가 발생하는 이유는 공유자원 때문이다. - 만약 어떤 자원을 여러 개의 프로세스가 공유하지 않는다면 교착상태는 발생하지 않을 것이다. cf1) 위의 예시에서 (공유자원 = 도로)이다. 공유되는 도로를 서로 차지하려다 교착상태가 발생한 것이다. cf2) 교착상태..
※ 세마포어든 모니터든 이것이 프로세스 수준에서 일어나는 것인지 Thread 수준에서 일어나는 것인지 깊게 신경쓰지 말자 ※ 우선은 세마포어와 모니터 그 자체의 원리를 이해하는 것에 초점을 맞추자 - 모니터는 세마포어의 단점을 해결한 상호 배제 메커니즘이다. - 모니터는 운영체제(OS)에서 처리하는게 아니라 java, C# 같은 프로그래밍 언어 차원에서 지원하는 방법이다. - java 코드를 예시로 모니터에 대해 알아보자 public class Health { private int health = 100; synchronized void increase(int amount) { health += amount; } synchronized void decrease(int amount) { health -= ..
- 아래의 글을 먼저 읽어본 후 세마포어 글을 읽어보자 2023.05.09 - [운영체제] - #20 프로세스 동기화 - 공유자원과 임계구역● 세마포어 예시 - 상호 배제(Mutual Exclusion) 메커니즘의 한 가지인 세마포어에 대해 알아보자 ex) 세마포어 예시 - 회사에서 직원들은 맡은 업무에 대한 문서 작업을 마치면 프린터로 결과물을 출력한다. - 이때 프린터는 네트워크를 통해 여러 PC와 연결돼있는 상태이다. 즉, (프린터 = 공유자원)이다.- 직원A와 직원B가 동시에 프린터 출력을 한다고 할 때 직원A의 컴퓨터와 직원B의 컴퓨터는 프린터를 차지하기 위해서 경쟁 조건(Rase Condition)이 되버린다.(서로 내가 먼저 출력하겠다고 하는 상태) - 이러면 직원 A의 결과물과 직원B의 결..
● 공유자원- 프로세스 간 통신을 할 때 공동으로 이용하는 변수나 파일들이 있는데 이런 것들을 공유자원이라고 한다. - 공유자원은 여러 프로세스들이 공유하기 때문에 각 프로세스의 접근 순서에 따라 결과가 달라질 수 있다. - 또한 컨텍스트 스위칭으로 시분할 처리를 하기 때문에 프로세스 실행 순서를 예측하기가 힘들다. (실행 순서는 OS에 의해 결정되기 때문이다.) - 즉, 연산 결과를 예측하기 힘들기에 문제가 발생할 수도 있는데 이러한 문제를 동기화 문제라고 한다.ex)- 게임에서 현재 플레이어의 체력이 20 남았고 몬스터에게 공격을 당하는 상황이다. - 플레이어는 죽지 않기 위해 체력 회복 물약을 먹었다. - 이때 물약을 먹는 코드와 몬스터에게 공격을 받는 코드에서 발생할 수 있는 동기화 문제를 알아보..
● 프로세스 통신 - 프로세스는 독립적으로 실행되기도 하지만 다른 프로세스와 데이터를 주고 받으며 통신을 하는 경우도 있다. - 여기서 '통신'은 2가지가 있다. 1. 하나의 컴퓨터 내에서 실행되는 다른 프로세스와 통신 2. 네트워크로 연결된 다른 컴퓨터에 있는 프로세스와 통신 ● 프로세스 간 통신 종류 1. 하나의 컴퓨터 내에서 서로 다른 프로세스 간 통신(파일과 파이프를 이용한 통신) - 파일 : 통신을 하려는 프로세스들이 하나의 파일을 이용해 내용을 읽고 쓰는 방법이다. - 파이프 : OS(운영체제)가 생성한 파이프를 이용해 데이터를 읽고 쓰는 방법이다. 2. Thread를 이용한 통신 ※ 내용을 보면 이건 Thread 간 통신인데 이게 프로세스 간 통신이 맞나 강사에게 질문을 올렸는데 Thread..
- MLFQ과 연관이 있는 내용이니 먼저 읽어보자 2023.03.19 - [운영체제] - #17 스케줄링 알고리즘 - RR(Round Robin Scheduling) #17 스케줄링 알고리즘 - RR(Round Robin Scheduling) ● 도입 - FIFO 알고리즘은 일괄처리 시스템에 적절하기에 시분할 처리 시스템에서는 쓰기가 힘들고 SJF 알고리즘은 프로세스 종료시간을 예측할 수 없기에 구현이 힘들다. - FIFO 알고리즘은 먼저 radderveloper.tistory.com ● MLFQ이 나온 계기 - MLFQ은 Round Robin Scheduling의 업그레이드 버전이다. - 오늘날 쓰이는 CPU 스케줄링 알고리즘의 대부분은 MLFQ이다. - 아래의 예시를 통해 MLFQ이 나온 계기를 알아..
- Total
- Today
- Yesterday
- 코딩테스트
- Advanced Stream
- SQL
- Stream
- Spring Boot
- Java8
- DART
- 알고리즘
- API
- 코테
- 운영체제
- 메모리
- 프로세스
- nosql
- java
- 프로그래머스
- MongoDB
- 자료구조
- jpa
- db
- SpringBoot
- Phaser
- git
- spring
- MySQL
- Phaser3
- OS
- node.js
- 빅데이터 분석기사
- 빅데이터
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |