전체 글
-
[OS] The Memory HierarchyCS/OS 2023. 2. 26. 16:08
registers cache MainMemory Magnetic Disk(CD, DVD) Magnetic tape 아래로 내려갈수록 용량증가, 액세스 시간 증가, 프로세서의 메모리 액세스 빈도 감소 - Principle of Locality 참조하고자 하는 프로세스들은 뭉쳐있다. (10을 수행 후 11을 수행하지, 5000을 수행하진 않는다는 의미) Cache: OS에 보이지 않는다. 다른 메모리 관리 하드웨어와 상호작용한다. 프로세서가 주기마다 메모리에 액세스 해야 한다. 작고 빠르며 locality가 있다. 메모리 사이클 시간에 의해 프로세서 실행이 제한된다.
-
[OS] Process switching 과정(Change of process state)CS/OS 2023. 2. 26. 16:02
1. Save the context of the processor 현재 프로세서의 상태(pc값, cpu의 레지스터 등)을 pcb에 저장한다. 2. Update the process control block of the process currently in the ( running ) state 현재 실행(running)중인 프로세스를 blocked/ ready/ suspend로 바꾼다. 3. Move the process control block of this process to the appropriate queue 4. Select another process for execution 들어올 프로세스를 고른다(스케줄링에 따라) 5. Update the process control block of th..
-
[OS] Deadlock 탐지를 위한 Coffman Algorithm 사용법CS/OS 2023. 2. 26. 15:58
1. 요청한 자원 매트릭스 & 할당되어있는 매트릭스 & 사용할 수 있는 자원 벡터를 작성한다. 2. 할당되어 있는 매트릭스(Allocation)에서 아무것도 Hold하지 않고 있는 프로세스는 Marked 한다. ex) Marked=(P4) (Marked는 Deadlock에 걸리지 않는 Process List) 3. available자원 or 사용 가능하게 될 자원은 W에 기록한다. ex) W=(00001) 4. W를 이용하여 끝낼 수 있는 Process가 있다면 그 Process는 Marked에 추가하고, 그 Process의 allocation+requese(쓰던것과 요청한것)을 다 썼다고 가정, W에 추가한다. 5. 이를 반복했을 때, Marked되지 않은 프로세스는 Deadlock이라고 판단할 수 있다.
-
[OS] Deadlock 없애는 방법2, 3 - Avoid Deadlock, Detect DeadlockCS/OS 2023. 2. 26. 15:43
- Avoid Deadlock 데드락이 생길 것 같으면 막는다. 데드락의 필요충분조건 4개는 존재하더라도, 프로세스의 시작을 금지하거나 자원할당을 금지하는 등 하여 데드락을 피한다. 대신, 자원을 얼마나 요청할지를 미리 알고 있어야 한다. 한 번 이상 실행을 시켰거나, 필요한 자원이 정확하게 계산 가능한 프로세스에만 적용할 수 있다. 1. Process Initiation denial(프로세스 실행 거부) 프로세스의 요구가 데드락으로 이어질 수 있는 경우, 프로세스를 시작하지 않는다. 즉, 프로세스의 자원 요청 개수가 자원용량을 넘겠다 싶으면 실행을 거부한다. 예) 자원a가 2개 있다. p1에서 a를 두번 사용 p2에서 a를 두번 사용 => 순서에 따라 두 프로세스 모두 쓸 수 있음에도 애초에 실행을 거..
-
[OS] Deadlock 없애는 방법1 - prevent deadlockCS/OS 2023. 2. 26. 15:32
Prevent deadlock: 앞선 글의 Deadlock의 필요충분조건 중 1개를 없앤다. - Indirect: mutualExclusion / holdAndWait / noPreemtion 중 하나를 없애는 방식 - Direct circular wait을 없애는 방식 Indirect방식을 먼저 살펴보자. 1. MutualExclusion을 없애기 즉, 한 번에 1개의 프로세스만 자원 접근이 가능하게 한다는 것이다. 다르게 생각해보면 이 말은 자원 공유가 불가능해진다는 얘기이다. 따라서 MutualExclusion을 없애기는 어렵다. 2. Hold-and-wait를 없애기 모두 hold시키거나 / 모두 wait 시킨다. 즉, 한꺼번에 모든 자원을 할당하거나 / 놓는 방식 => 아무 연산도 못하고 대기하..
-
[OS] Conditions for DeadlockCS/OS 2023. 2. 26. 15:13
Coffman교수가 말하는 데드락의 필요충분조건에 대해 설명한다. 데드락 상태라면 아래의 조건은 모두 만족한다고 볼 수 있다. 1. mutual-exclusion 한 자원을 둘이서 동시에 쓸 수 없게 하는 것 2. hold-and-wait 한 자원을 차지한 채 다른 자원을 요청해 대기 3. no pre-emption 내가 가진 자원을 다른 프로세스가 빼앗아 갈 수 없음 4. circular wait 점유요청을 쭉 따라가다 보면 싸이클이 생긴다. 모두가 요청한 채 기다리는 상황
-
[OS] PCB(Process Control BlockCS/OS 2023. 2. 26. 15:09
이름대로 프로세스 실행을 위한 정보를 모두 가지고 있다. (멈췄다가 복원하려면 원래 어땠는지 알아야 하니까) PCB가 담고 있는 정보 1. identifier (프로세스 id) 2. state (어떤 상태인지. 이걸 알아야 스케줄링 가능하니까) 3. priority (우선순위) 4. pc 값 (program counter=다음번 실행할 명령어의 주소) 5. memory pointers(메모리 관련 정보-위치,양 등) 6. context data 7. I/O status information (I/O의 상태) 8. accounting information(계정관리-관리자냐 사용자냐)