
물리적 메모리의 할당방식 물리적 메모리는 운영체제 상주영역과 사용자 프로세스 영역으로 나뉜다. OS 상주영역은 interrupt vector와 함께 낮은 주소영역을 사용하고, 사용자 프로세스 영역은 높은 주소 영역을 사용한다. 연속할당 각각의 프로세스가 메모리의 연속적 공간에 적재되는 것이다. 고정분할 방식 : 사용자 프로그램이 들어갈 부분을 파티션으로 미리 나눠놓는 방식이다. 동시에 메모리에 올릴 수 있는 프로램에 제한이 있으며 수행가능한 프로그램의 최대크기에 제한이 있다. 외부조각과 내부조각이 발생할 수 있다. 외부조각은 사용이 안 된 메모리공간이나 현재 상태에서 사용하기엔 작아서 사용될 수 없는 공간을 의미한다. 내부조각은 분할된 메모리 공간을 사용하고 남는 공간을 의미한다. 가변분할 방식 : 미리..

헷갈려서 위의 그림이 정확히 맞는지는 모르겠다. 하지만 요지는 메모리는 주소를 통해 접근하는 저장장치이다. 이 때 효율적인 관리를 위해 페이지 단위로 나눠서 관리한다. 주소 바인딩 주소는 가상주소와 물리적 주소로 나눌 수 있다. 가상주소(virtual address), 논리적 주소(logical address) : CPU에 의해 프로세스마다 독립적으로 만들어진 주소이다. CPU가 가상주소를 바라보고 MMU를 통한 주소변환으로 물리 메모리에 올려 그 주소의 데이터를 사용하게 된다. (가상주소의 개념이 이해하기 어려워 스왑영역과 헷갈려 하기도 했다. 가상주소는 말 그대로 CPU가 바라보는 주소이다. 스왑영역은 메모리 공간이 부족할 때 확장 개념으로 사용하는 별개의 개념이다. 스왑영역은 일반 디스크의 파일시스..

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

멀티 프로세서 환경에서는 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의 커널스택 프로세스..
- Total
- Today
- Yesterday
- TCP/IP
- 마스터즈코스
- 개발공부일지
- Spring
- 운영체제
- DB
- javascript
- 학습로그
- 인증
- 카카오
- JS
- java
- TIL
- 네트워크
- 글쓰기미션
- 월간회고
- 객체지향
- 모의면접준비
- OS
- python
- 우아한테크코스
- 회고
- React
- 알고리즘
- 코드스쿼드
- Transaction
- CS
- 우테코수업
- 내부코드
- JPA
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |