분류 전체보기
-
10.세마포어(Semaphore), 뮤텍스(Mutex)Computer Science/Operating System 2021. 8. 24. 20:43
∙임계 구역(Critical Section) ∘여러 프로세스가 공유 데이터를 접근하는 프로그램 코드 부분 ∙세마포어 ∘멀티프로그래밍 환경에서 공유 자원에 대한 접근을 제한하는 방법 -P: 임계 구역 들어가기 전에 수행(ex)S==1->S==0) -V: 임계 구역에서 나올 때 수행(ex)S==0->S==1) -S는 0이상의 정수 ∙뮤텍스 ∘임계 구역을 가진 스레드들의 실행시간이 서로 겹치지 않고 각각 단돈으로 실행되게 하는 기술 -lock: 현재 임계 구역에 들어갈 권한을 얻음(다른 프로세스/스레드가 임계 구역 수행 중이면 종료까지 대기) -unlock: 임계 구역을 모두 사용했음을 알림(대기 중인 다른 프로세스/스레드가 임계 구역에 진입) -S==1인 이진 세마포어 ➀데커(Dekker) 알고리즘 -fla..
-
9.경쟁 상태(Race Condition)Computer Science/Operating System 2021. 8. 23. 15:47
∙경쟁 상태 ∘공유 자원에 대해 여러 프로세스가 동시에 접근할 때, 결과값에 영향을 줄 수 있는 상태 ➀커널 작업 수행 중 인터럽트가 발생하여 같은 데이터를 조작하는 경우 ->커널모드에서 작업을 수행하는 동안 인터럽트를 disable 시켜 CPU 제어권을 가져가지 못하게 한다. ➁프로세스가 시스템 콜을 하여 커널 모드로 진입하여 작업을 수행하는 도중 Context Switch가 발생 ->프로세스가 커널모드에서 작업을 하는 경우 CPU 제어권이 다른 프로세스에게 넘어가지 않도록 한다. ➂멀티 프로세스 환경에서 2개 이상의 CPU가 공유 메모리 내의 커널 데이터에 동시에 접근할 때 ->커널 내부 공유 데이터에 접근할 때마다, 그 데이터에 대한 lock/unlock을 한다. 출처 링크
-
8.데드락(Dead Lock)Computer Science/Operating System 2021. 8. 22. 21:47
∙데드락 ∘둘 이상의 프로세스가 다른 프로세스가 점유하고 있는 자원을 서로 무한히 기다리는 상황(교착 상태) ∙데드락 발생 조건 ➀상호배제: 자원은 한 번에 한 프로세스만 사용할 수 있다. ➁점유대기: 최소 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용하고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 존재해야 한다. ➂비선점: 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없다. ➃순환 대기: 대기 프로세스의 집합이 순환 형태로 자원을 대기하고 있어야 한다. ∙데드락 처리 ➀예방 -교착 상태 발생 조건 중 하나를 제거하면서 해결한다. -자원 낭비가 엄청 심하다. ➀상호배제 부정: 여러 프로세스가 공유 자원 사용 -동기화 관련 문제 발생 가능 ➁점유대기 부정:..
-
7.CPU SchedulingComputer Science/Operating System 2021. 8. 21. 16:25
∙스케줄링 ∘CPU를 효율적으로 사용하기 위해 프로세스를 배정하는 과정 -조건: 적은 오버헤드, 높은 사용률, 적은 기아 현상 -가능하면 많은 일을 수행. -빠른 응답 시간, 적은 대기 시간 -기한(deadline)안에 수행 ∙프로세스 상태와 상태 전이 ∙비선점 스케줄링 ➀FCFS(First Come Fist Served) -큐에 도착한 순서대로 CPU에 할당 -실행 시간이 짧은 프로세스가 뒤로 가면 평균 대기 시간이 길어진다. ➁SJF(Shrtest Job First) -수행시간이 가장 짧다고 판단되는 프로세스를 먼저 수행 -FCFS 보다 평균 대기 시간 감소. 짧은 작업에 유리 ∙선점 스케줄링 ➀Priority Scheduling -정적/동적으로 우선순위를 부여하여 우선순위가 높은 순서대로 처리 -우..
-
6.IPC(Inter Process Communication)Computer Science/Operating System 2021. 8. 20. 00:31
∙IPC ∘독립적 구조를 가진 프로세스 간의 통신 -커널이 제공하는 IPC 설비를 이용해 프로세스간 통신한다. ➀익명 PIPE -통신할 프로세스를 알 수 있는 경우에 사용 -두 개의 프로세스를 연결하는데 하나는 데이터를 쓰기만 하고, 다른 하나는 읽기만 할 수 있다. -한쪽 방향으로만 통신이 가능한 반이중 통신 -양쪽으로 모두 송/수신(전이중 통신) 하고 싶으면 2개의 파이프가 필요하다. 구현이 복잡하다. -단순한 데이터 흐름을 가질 때 사용하는 것이 효율적 ➁Named PIPE -전혀 모르는 상태의 프로세스들 사이 통신에 사용 -통신을 위해 이름있는 파일을 사용(Named) -익명 PIPE와 같은 반이중 통신 ➂Message Queue -PIFE와 같은 데이터 흐름이 아닌 메모리 공간이다. -사용할 데..
-
5.PCB(Process Control Block), Context SwitcingComputer Science/Operating System 2021. 8. 19. 23:46
∙Process Metadata ∘프로세스들의 특징 ∙PCB(Process Control Block) ∘프로세스 메타데이터를 저장하는 공간 -한 PCB안에 한 프로세스 정보가 담긴다. -앞으로 다시 수행할 대기 중인 프로세스를 PCB에 저장해둔다. -Linked List방식으로 PCB List Head에 PCB들이 생성할 때마다 추가된다. ∙Context Switching ∘CPU가 이전 프로세스 상태를 PCB에 보관하고, 다른 정보를 PCB에서 읽어 레지스터에 적재하는 과정 출처 링크
-
3.인터럽트(Interrupt)Computer Science/Operating System 2021. 8. 17. 15:52
∙인터럽트 ∘프로그램 실행 도중 예기치 않은 상황 발생 시 실행 중 작업을 중단하고 발생 상황을 처리 한 후 실행 중이던 작업으로 복귀하여 계속 진행하는 것 ➀외부 인터럽트: 입출력 장치, 전원 등 외부적인 요인으로 발생 ➁내부 인터럽트: 잘못된 명령이나 데이터를 사용할 때 발생(Trap) ➂소프트웨어 인터럽트: 더 우선순위가 높은 명령을 요청 받을 때 발생 ∙인터럽트 처리 과정 ∘현재 수행 중인 프로그램을 멈추고, 상태 레지스터와 PC 등을 스택에 잠시 저장 하고 인터럽트 서비스 루틴으로 간다. 서비스 루틴이 끝나고 스택에 잠시 저장했던 정보를 불러와 다시 수행한다. -수행 중인 정보를 스택에 임시 저장하기 위해 하드웨어의 지원을 받아야 한다. -폴링 방식에 비해 신속하게 대응 할 수 있다. -발생 시..