
교착상태라고 부르기도 하며, 일련의 프로세스들이 서로 가진 자원을 요청하며 block된 상태를 의미한다. CPU를 사용하기 위한 자원을 확보해야 하는데, 자신이 확보한 일부 자원은 내어놓지 않고 서로 상대의 자원을 요구하는 상황이라 누구도 사용하지 못하고 계속 대기하는 상태를 뜻한다. 욕심쟁이 단체라 양보도 안하고 그렇다고 그 누구도 사용할 수 없는 느낌이다. 여기서 뜻하는 자원은 하드웨어, 소프트웨어 등을 포함하는 개념이다. IO device, CPU cycle, 메모리공간, semaphore 등을 의미한다. Deadlock의 발생조건 4가지 mutual exclusion (상호배제, 상호배타) : 매 순간 하나의 프로세스만 자원 사용 가능하다. no preemption (비선점) : 프로세스는 자원을..

컴퓨터 배경 스토리 옛날에는 유선으로 된 회로로 전신기를 사용하였다. 길이가 길어질수록(거리가 길어질수록) 저항이 커져 전압이 약해졌다. 이걸 개선하기 위해 릴레이를 설치한다. 이것은 원래 전기 증폭의 목적으로 만들었다. 하지만 똑똑한 사람들이 릴레이를 진공관, 레지스터 등으로 발전시켰다. 이미테이션게임(영화)에서 베네딕트가 엄청 큰 컴퓨터에 전선을 여기저기 꽂아가며 조작하는게 나오는데 이게 옛날 진공관으로 만든 컴퓨터라고 한다. AND, OR, NOT(Invertor)를 사용하여 NAND, NOR, XOR등의 논리회로를 만들 수 있다. 이것들을 적당히 활용하면 연산을 수행할 수 있는 장치를 만들 수 있다. 미션에서 만든 바이트계산기도 논리회로를 적용한 반가산기, 전가산기로 만들어진다. (반가산기 2개를..

멀티 프로세서 환경에서는 critical section problem을 사용하여 모든 프로그램에게 적용하는 것은 비효율적이게 된다. 따라서 하드웨어 측면에서도 동기화를 유지하기 위한 방법들이 존재한다. 하드웨어 측면에서 동기화하는 방법에 대해 정리한다. Test and set 동기화 명령 중 하나로 하드웨어의 도움을 받는다. 상호배제를 편리하게 구현할 수 있다. 하드웨어적으로 읽고, 셋팅하는 작업을 atomic하게 수행한다. 원자적인 명령이기 때문에 명령어가 실행되는 동안 인터럽트가 일어날 수 없다. boolean lock 변수를 설정하여 lock이 걸려있는 상태에서는 다른 프로세스가 critical section에 접근하지 못하도록 한다. (위키참고) // Synchronization variable ..

데이터의 접근 Race Condition 여러 E-Box가 S-Box를 공유하는 경우 Race Condition의 가능성이 있다. 경쟁상태란 둘 이상의 입력 또는 조작이 타이밍이나 순서에 따라 결과값에 영향을 줄 수 있는 상태를 뜻한다. OS에서 race condition은 언제 발생하는가? 커널 수행 중 인터럽트가 발생한 경우 프로세스가 시스템콜을 하여 커널모드 수행 중일 때 문맥교환이 일어나는 경우 멀티 프로세서에서 공유데이터를 사용하는 프로세스들이 커널 내부 데이터를 접근하는 경우 [1번 경우 해결방안] interrupt disable/enable로 인터럽트의 처리여부를 조정한다. 데이터를 건드리는 경우에 인터럽트가 들어와도 작업이 끝날 때까지 인터럽트를 처리하지 않도록(disable) 한다. 데이..

CPU-burst time I/O bound process(I/O bound job) : I/O 작업을 많이 하는 프로세스로 사용자로부터 인터렉션(interaction)을 자주 받아가며 프로그램을 수행하는 대화형 프로그램(interactive program)을 의미한다. CPU bound process(CPU bound job) : I/O 작업은 거의 하지 않고 CPU를 가지고 빠른 명령을 수행하는 프로그램을 의미한다. 사용자에 대한 빠른 응답이 중요하기 때문에 CPU 스케줄링을 할 때 CPU 버스트가 짧은 I/O bound 프로세스에게 CPU를 우선적으로 사용할 수 있게 하는 스케줄링이 필요하다. 이것은 빠른 응답성 제공과 함께 I/O 장치의 효율성을 높이는 효과가 있다. CPU Scheduler 운영..

큐 프로세스를 스케줄링하기 위해 큐를 사용한다. 큐는 줄을 세우고 순서에 따라 처리하는 방식이다. 준비 큐(ready queue) - 준비상태 운영체제에서 준비상태의 있는 프로세스들은 준비 큐(ready queue)에 줄을 세워 가장 먼저 있는 프로세스에게 CPU를 할당한다. 장치 큐(device queue) - 봉쇄상태 자원별로 장치 큐(device queue)를 둔다. 입출력 장치마다 큐를 두어 일처리를 해준다고 생각하면 된다. 디스크 입출력 큐, 키보드 입출력 큐 등이 있다. 자원 큐 - 봉쇄상태 소프트웨어 자원을 위한 큐이다. 공유 데이터에 대한 접근권한을 예로 들 수 있다. 한 프로세스가 공유 데이터를 사용할 때 다른 프로세스가 접근하게 되면 데이터의 일관성이 깨질 수 있기 때문에 자원 큐를 둔..

프로세스란 실행 중인 프로그램(program in execution)을 뜻한다. 프로세스 문맥 시분할 방식에서는 시간별로 CPU 제어권을 가진 프로세스가 바뀐다. CPU 제어권을 획득해서 수행할 때 직전에 어디까지 작업했는지 정보를 가지고 있어야 한다. 정확한 재현을 위해 필요한 정보를 프로세스 문맥이라고 한다. 프로세스 문맥은 크게 하드웨어 문맥, 프로세스의 주소공간, 커널상의 문맥으로 나뉘어 진다. - 하드웨어 문맥 : CPU 수행상태를 나타내는 것으로 프로그램 카운터 값과 각종 레지스터에 저장하고 있는 값 - 프로세스 주소공간 : 독자적인 주소공간 (코드, 데이터, 스택) - 커널상의 문맥 : 커널 주소공간 중 데이터 영역에 있는 PCB, 커널 주소공간 중 스택에 있는 프로세스A의 커널스택 프로세스..

주소공간 컴퓨터 프로그램의 내부구조는 함수들로 구성된다. 프로그램이 CPU에서 명령을 수행하려면 해당 명령이 있는 주소영역이 메모리에 올라가 있어야 한다. 프로그램의 주소영역은 코드, 데이터, 스택 영역으로 구분된다. - 코드 : 작성한 함수의 코드가 CPU에서 수행가능한 기계어 명령어 형태로 변환되어 저장되는 부분 - 데이터 : 전역 변수 등 프로그램이 사용하는 데이터를 저장하는 부분 - 스택 : 함수가 호출될 때 호출된 함수의 수행을 마치고 복귀할 주소 및 데이터를 임시로 저장하는데 사용 PC (Program Counter) CPU가 수행해야 할 메모리 주소를 담고있는 주소이다.CPU는 PC가 가리키는 메모리 위치의 명령을 처리하게 된다. 프로그램의 실행 프로그램의 실행되고 있다의 의미는 1. 디스크..
- Total
- Today
- Yesterday
- javascript
- 글쓰기미션
- 마스터즈코스
- JS
- 개발공부일지
- React
- 우테코수업
- 회고
- 월간회고
- 알고리즘
- 객체지향
- 내부코드
- java
- 코드스쿼드
- TCP/IP
- Spring
- JPA
- 학습로그
- OS
- CS
- 운영체제
- TIL
- Transaction
- 모의면접준비
- DB
- 우아한테크코스
- 네트워크
- 카카오
- python
- 인증
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |