본문 바로가기
반응형

65

운영체제 - 교착 상태 해결 방법(예방, 회피, 검출 후 회복) 1. 교착 상태 예방 교착 상태 발생 조건(상호 배제, 점유와 대기, 비선점, 원형 대기)중 하나를 없애기 01 상호 배제 없애는 경우 모든 자원을 공유 가능하게 만든다는 말과 같다. 이는 현실적으로 사용하기에는 무리가 있다. 02 점유와 대기를 없애는 경우 만약 점유와 대기를 없앤 다면 특정 프로세스에 자원을 모두 할당하거나 아예 할당하지 않는 방식으로 배분된다. 이론적으로는 해결할 수 있지만 자원의 활용률이 낮아지는 문제가 생긴다. 03 비선점 조건을 없애는 경우 비선점 조건을 없애면 자원을 이용 중인 프로세스로부터 해당 자원을 빼앗을 수 있게된다. 선점이 가능한 자원(e.g. CPU)에 한해 효과적이다. 그러므로 모든 자원이 선점 가능한 것이 아니다. 04 원형 대기 조건을 없애는 경우 모든 자원에.. 2024. 2. 15.
운영체제 - 교착 상태(식사하는 철학자 문제,자원할당 그래프, 교착 상태 발생 조건) 식사하는 철학자 문제(Dining philosophers problem) 이 철학자들은 식사를 할 수 있을까? 한 두명의 철학자들만 식사할 경우 아무문제 없을 수 있다. 하지만 모든 철학자가 동시에 포크를 집어 식사를 하면 어떤 철학자도 식사를 할 수 없다. 모든 철학자가 왼쪽 포크를 집어들면 모두가 오른쪽 포크를 집어들 수 없기 때문이다. 그러므로 모든 철학자는 다른 철학자가 포크를 내려 놓을때까지 기다려야한다. 이렇게 일어나지 않을 사건을 기다리며 진행이 멈춰 버러는 현상을 교착상태(DeadLock)라고 한다. 컴퓨터 관점에서의 경우 교착 상태 해결법 1. 교착 상태가 발생했을 때의 상황을 정확히 표현해보기 자원 할당 그래프(Resource-Allocation graph) 어떤 프로세스가 어떤 자원을.. 2024. 2. 15.
Effective C# - Item 29 컬렉션을 반환하기보다 이터레이터를 반환하는 것이 낫다 메서드를 작성하다 보면 단일의 객체를 반환하기보다 일련의 시퀀스를 반환해야 하는 경우가 종종 있다. 시퀀스를 반환하는 메서드를 작성해야 한다면 컬렉션을 반환하기보다는 이터레이터를 반환하는 것이 좋다. 01 컬렉션을 반환하는 메서드 public static List GetEvenNumbers(int n) { List evenNumbers = new List(); for (int i = 1; i 2024. 2. 2.
운영체제 - 동기화 기법(뮤텍스 락,세마포,모니터) 1. 뮤텍스 락(Mutex lock) 상호배제를 위한 동기화 도구(자물쇠 역할) 뮤텍스 락의 단순한 형태 전역 변수 하나, 함수 두 개 자물쇠 역할 : 프로세스들이 공유하는 전역 변수 lock 임계 구역을 잠그는 역할 : acquire 함수 임계 구역의 잠금을 해제하는 역할 : release 함수 01 auquire 함수 프로세스가 임계 구역에 진입하기 전에 호출 임계 구역이 잠겨 있다면 - 임계구역이 열릴때까지(lock이 false가 될 때까지) 임계 구역을 반복적으로 확인 임계 구역이 열려 있다면 - 임계 구역을 잠그기(lock을 true로 바꾸) While문을 통해 계속 임계 구역이 잠겨있는지 없는지 확인하므로 Busy Waiting(바쁜 대기)이다. 02 release 함수 임계 구역에서의 작업이.. 2024. 2. 1.
운영체제 - 동기화, 공유 자원, 임계 구역, 상호 배제 동시다발적으로 실행되느 프로세스들은 서로 협력하며 영향을 주고 받는다. 이 과정에서 자원의 일관성을 보장해야 한다. 이렇게 하기 위해서는 반드시 동기화(synchronization)되어야 한다. 동기화란? 특정 자원에 접근할 때 한 개의 프로세스만 접근하게 하거나 프로세스를 올바른 순서대로 실해아게 하는 것을 의미한다. (프로세스 )동기화란? 프로세스들 사이의 수행시기를 맞추는 것이다. 이는 무엇을 의미할까? 실행 순서 제어 : 프로세스를 올바른 순서대로 실행하기 상호 배제 : 동시에 접근해서는 안 되는 자원에 하나의 프로세스만 접근하게 하기 프로세스뿐만 아니라 스레드도 동기화 대상이다. 실행의 흐름을 갖는 모든 것은 동기화의 대상이다. 1. 실행 순서 제어를 위한 동기화 Writer : Book.txt.. 2024. 2. 1.
운영체제 - CPU스케줄링 알고리즘(선입 선처리, 최단 작업 우선, 라운드 로빈, 최소 잔여 시간 우선, 우선순위, 다단계 큐, 다단계 피드백 큐) 1. 선입 선처리 스케줄링(FCFS, First Come First Served) 단순히 준비 큐에 삽입된 순서대로 처리하는 비선점 스케줄링 방식이다. 즉 먼저 CPU를 요청한 프로세스부터 CPU를 할당한다. 호위 효과(Convoy Effect) CPU 버스트 시간이 긴 프로세스가 준비 큐 앞에 위치하게 되면 그 뒤에 있는 짧은 CPU버스트를 가지는 프로세스들도 해당 프로세스의 끝을 기다려야 하는 현상이다. 2. 최단 작업 우선 스케줄링(SJF, Shortest Job First) 호위 효과를 방지하려면 CPU 사용이 긴 프로세스는 나중에 실행하고 CPU 사용시간이 짧은 프로세스는 먼저 실행하도록 한다. 최단 작업 우선 스케줄링은 기본적으로 비선점형 스케줄링 알고리즘으로 분류되지만 선점형으로 구현될 수도.. 2024. 1. 21.
반응형