목록CS (67)
예지의 개발 로그포스 (Yeji's Log Force)
Coffman교수가 말하는 데드락의 필요충분조건에 대해 설명한다. 데드락 상태라면 아래의 조건은 모두 만족한다고 볼 수 있다. 1. mutual-exclusion 한 자원을 둘이서 동시에 쓸 수 없게 하는 것 2. hold-and-wait 한 자원을 차지한 채 다른 자원을 요청해 대기 3. no pre-emption 내가 가진 자원을 다른 프로세스가 빼앗아 갈 수 없음 4. circular wait 점유요청을 쭉 따라가다 보면 싸이클이 생긴다. 모두가 요청한 채 기다리는 상황
이름대로 프로세스 실행을 위한 정보를 모두 가지고 있다. (멈췄다가 복원하려면 원래 어땠는지 알아야 하니까) 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(계정관리-관리자냐 사용자냐)
세가지 방식 모두 여러 Process나 Thread에 동시 실행을 제공하는 방식이다. 1. Multi-processing 여러 개의 processor(CPU)를 이용해서 여러 프로세스를 물리적으로 동시에 실행하는 방식을 의미한다. 진정한 병렬 실행 방식이다. 2. Multi-programming 프로세스가 I/O event wait를 위해 block되었을 때, CPU를 다른 프로세스에게 할당하여 CPU의 활용률을 높이는 방식이다. 즉, cpu가 I/O wait등 대기하는 상태가 됐을 때 다른 프로그램이 돌아갈 수 있도록 실행 권한을 넘겨주는 것. 시간적으로 여러 프로세스에게 번갈아 가며 CPU를 할당하는 방식으로 동시 실행을 제공하게 된다. 또한, I/O event wait가 아니더라도 일정시간(quan..
프로세서 활용도 개선을 위해 제공된다. 대부분의 I/O장치가 프로세서보다 느리다. 이 때 프로세서가 대기해야 하므로 일시 중지 하면 프로세서를 낭비하는 것이다. 그래서 인터럽트한다. 사용자 코드에는 인터럽트 코드가 없다. cpu와 os가 인터럽트를 처리한다. 인터럽트 발생 시 pc값을 인터럽트 핸들러 프로그램의 시작 주소로 설정, 커널모드로 전환 인터럽트 있는지 체크 -> 프로세스 상태를 stack에 저장 -> 인터럽트 핸들러로 인터럽트 실행 -> stack을 참고해 원래 pc값으로 돌아오기 - 인터럽트를 이용해 I/O에 의해 발생하는 wait 시간을 효율적으로 사용할 수 있게 되었다. - 매 명령어의 수행을 마치고 나면 대기중인 인터럽트가 있는지 확인 한 후 처리한다. - 인터럽트는 시스템, 운영체제,..