목록Computer (171)
Machineboy空
교착 상태 해결(3) 예방 회피 검출 후 회복 1) 교착 상태 예방 애초에 교착 상태가 발생하지 않도록 교착 상태 발생 조건(상호 배제, 점유와 대기, 비선점, 원형 대기) 중 하나를 없애버리기 상호 배제를 없앤다면? 모든 자원을 공유 가능하게 만든다? 이론적으로는 가능하지만 현실적으로는 불가 점유와 대기를 없앤다면? 특정 프로세스에 자원을 모두 할당하거나, 아예 할당하지 않는 방식으로 배분 단점: 자원의 활용률을 낮출 수 있는 방식 비선점을 없앤다면? 선점이 가능한 자원 (ex.CPU)에 한해 효과적 모든 자원이 선점 가능한 것은 아니다 프린터 등 원형 대기를 없앤다면? 자원에 번호를 붙이고 오름차순으로 할당하면 원형 대기는 발생하지 않는다 한계 자원에 번호를 붙이는 것은 어려운 작업 어떤 자원에 어떤..
프로세스 실행을 위해서는 자원이 필요한데, 두 개 이상의 프로세스가 각각의 자원을 그저 기다리기만 한다면 어떤 프로세스도 실행되지 못하고 꽉 막혀 멈춰버리는 현상이 발생할 것. 교착 상태란? 식사하는 철학자 문제 (Dining Philosopher's Problem) 왜 발생하고 어떻게 해결하는지 힌트를 주는 문제. 모든 철학자가 모두 동시에 이 프로세스를 진행하게 되면, 그 누구도 식사를 할 수 없다. 계속 생각만 하게 될 것. 모두 왼쪽 포크를 들게 되면 놓을 때 까지 오른쪽 포크를 사용할 수 없으니 계속 생각만 하게 될 것. 일어나지 않을 사건을 기다리며 진행이 멈춰 버리는 현상. 철학자 = 프로세스, 스레드 포크 = 실행에 꼭 필요한 자원 식사하는 것 = 실행하는 것 컴퓨터 상황으로 예시를 들어보..
프로세스 동기화 기법은 여러가지가 있지만 그중 대중적으로 알려진 뮤텍스 락, 세마포, 모니터 프로그램 언어, 코드 짜진 것 보고 이해해보는 것도 좋은 방법 실행 순서를 위한 동기화 상호 배제를 위한 동기화 뮤텍스 락 (Mutex Lock) 상호 배제를 위한 동기화 도구(자물쇠 역할) 탈의실 = 1번에 1명만 이용할 수 있는 공유 자원, 임계 구역 손님 = 프로세스 탈의실이 이용중이라는 표시 = 자물쇠 (뮤텍스 락) 뮤텍스 락의 단순한 형태: 전역 변수 하나, 함수 두 개 자물쇠 역할: 프로세스들이 공유하는 전역 변수 lock 임계 구역을 잠그는 역할: acquire함수 임계 구역의 잠금을 해제하는 역할: release 함수 acquire 함수 프로세스가 임계 구역에 진입하기 전에 호출 임계 구역이 잠겨있..
프로세스와 스레드의 동기화 (동기화에 스레드도 포함된다) 동시다발적으로 실행되는 프로세스들은 서로 협력하며 영향을 주고 받는다. 이 과정에서 자원의 일관성을 보장해야 한다. 동기화란 무엇인지, 동기화가 왜 필요한지, 동기화를 하지 않으면 어떤 문제가 발생하는지 알아보자! 동기화의 의미 공동의 목적을 위해 동시에 수행되는 프로세스. ex. 워드 프로세서 맞춤법 검사 프로세스 입력 내용을 화면에 출력하는 프로세스 등 아무렇게나 마구 실행하면 안되고, 올바른 수행을 위해 프로세스들은 동기화되어야 한다. (프로세스)동기화란? 프로세스들의 수행 시기를 맞추는 것 실행 순서 제어: 프로세스를 올바른 순서대로 실행하기 상호 배제: 동시에 접근해서는 안되는 자원 하나의 프로세스만 접근하게 하기 *실행의 문맥을 갖는 모..
함수에 값을 전달 할 때 두 가지 방법 Call by Value(값에 의한 호출) Call by Reference(참조에 의한 호출) 매개변수로 전달되는 변수를 모두 함수 내부에서 복사해서 함수 실행 함수 내부에서 전체 복사가 일어나고 실제 변수와는 다른 주소에 할당 실제 변수의 주소값 != 매개변수로 전달된 변수의 주소값 변수의 주소를 매개변수로 함수에 전달하는 함수 원본값 변경 X 원본값 변경 O primitive한 타입 등에 적합 byte, short,int,long,float,double,boolean,char reference타입 : 인스턴스화 가능한 모든 클래스의 배열에 적합 String, struct,class,int[], string[] 복사가 일어나지만 간단하기 떄문에 복사에 대한 코스트..
선형 자료구조(Linear Data Structure) 종류 형식 특성 시간 복잡도 메소드 Vector vector v 동적 할당, 정적 할당 - 연속된 메모리 공간에 위치한 같은 타입의 요소들 모음 - 숫자인덱스 기반 랜덤 접근 가능 - 중복 허용 맨 뒤 삭제,삽입 O(1) 맨 뒤나 앞이 아닌 요소를 삭제 삽입 O(n) push_back() pop_back() erase() find() clear() fill() Array int a[10]; 정적 할당 - 연속된 메모리 공간에 위치한 같은 타입의 요소들 모음 - 숫자인덱스 기반 랜덤 접근 가능 - 중복 허용 X List list a; 데이터를 감싼 노드를 포인터로 연결해서 공간적 효율성을 극대화 - 요소가 인접한 메모리 위치에 저장되지 않는 선형 자료..
7가지의 CPU 알고리즘 아이디어와 작동 방식 정도 숙지하기. 선입 선처리 스케줄링 (FCFS, First Come First Served) 최단 작업 우선 스케줄링 (SJF, Shortest Job First) 라운드 로빈 스케줄링 (RR, Round Robin) 최소 잔여 시간 우선 스케줄링 SRT, Shortest Remaining Time) 우선순위 스케줄링 다단계 큐 스케줄링 (Multilevel queue) 다단계 피드백 큐 스케줄링 (Mulitilevel feedback queue) 선입 선처리 스케줄링 (FCFS, First Come First Served) 단순히 준비 큐에 삽입된 순서대로 처리하는 비선점 스케줄링. 먼저 CPU를 요청한 프로세스부터 CPU 할당. 단점: 프로세스들이 기다..
프로세스 우선순위 (Priority) 가장 공정한 CPU 스케줄링은? CPU를 사용하고 싶어하는 프로세스들이 차례로 돌아가는 것? 빨리 처리해야하는 프로세스가 있음 = 프로세스마다 우선순위가 다르기 때문 입출력 작업이 많은 프로세스 (= 입출력 집중 프로세스, I/O bound process)의 우선순위는 CPU작업이 많은 프로세스 (= CPU 집중 프로세스, CPU bound process)의 우선순위보다 높다 입출력 집중 프로세스가 실행 상태보다 대기 상태에 더 많이 머무르게 될 것. 그래서 CPU를 한동안 안쓸 것임. 그래서 빨리 처리할 수 있는 입출력 집중프로젝트를 먼저 처리. 스케줄링 큐 운영체제 입장에서 다음 프로세스를 정하기 위해서 모든 프로세스의 PCB를 뒤적이는 것은 비효율적. 입출력 프..