Computer Science/운영체제

Segmentation 프로그램을 의미 단위인 여러개의 segment로 구성 작게는 프로그램을 구성하는 함수 하나하나를 세그먼트로 정의 크게는 프로그램 전체를 하나의 세그먼트로 정의 가능 일반적으로는 code, data, stack 부분이 하나씩의 세그먼트로 정의됨 Segment 는 다음과 같은 logical unit 들이다. main(), function, global variables, stack, symbol table, arrays Segmentation Architecture locigal address는 다음의 두가지로 구성 segment table : 각각의 테이블 엔트리는 base 와 limit 을 가지고 있음 base : starting physical address of the segm..
Paging 기법과 주소 변환 Paging 기법에서는 프로그램을 구성하는 주소 공간이 동일한 크기의 Page 라는 단위로 잘려서, 각각의 Page가 물리적 메모리의 어디에나 올라갈 수 있다. 각각의 Page들이 어느 위치에 올라가 있는지 알기 위해서는 Page별로 주소 변환이 필요하다. Paging 기법 물리 메모리는 Frame 이라 불리는 같은 크기의 블록으로 나누어진다. 논리메모리는 Page라 불리는 같은 크기의 블록으로 나누어진다. Page Table에서 논리적인 주소에서 물리적인 주소로 주소 변환을 한다. 따라서 Page Table에서는 logical memory 의 개수만큼 entry 가 존재하게 된다. Index를 이용해서 곧바로 접근할 수 있는 자료 구조 형태이다. 각각의 Page는 Code..
Logical vs Physical Address 1. Logical Address (= Virtual Address) 프로세스마다 독립적으로 가지는 주소 공간 각 프로세스마다 0번지부터 시작 CPU가 보는 주소는 logical address 이다. 2. Physical Address 메모리에 실제 올라가는 위치 3. 주소 바인딩 : 주소를 결정하는 과정 어떤 프로그램이 물리적 메모리 어느 곳에 올라갈지를 결정한다. Symbolic Address -> Logical Address -> Physical Address *Symbolic Address : 프로그래머들이 특정 이름을 통해 변수를 지정하고 값을 저장할 때, 변수의 이름을 통해 값에 접근하게 된다. 즉 우리가 흔히 사용하는 포인터이다. 주소 바인딩..
Deadlock : 일련의 프로세스들이 서로가 가진 자원을 기다리며 block 이 된 상태 Resource 자원으로, software 자원일 수도 있고 hardware 자원이 될 수도 있다. ex. I/O device, CPU cycle, memory space, semaphore 프로세스가 자원을 사용하는 절차 ex. Request, Allocate, Use, Release https://core.ewha.ac.kr/publicview/C0101020170412134857472082
1. Bouned-Buffer Problem 공유 데이터에 관련한 고전적인 '동기화' 문제이다. producer-consumer 문제라고도 한다. 문제점 1) Producer 발생 할 수 있는 문제 : 생산자는 데이터를 만들어서 집어 넣는 역할. 생산자 둘이 동시에 비어있는 버퍼에 도착하는 경우, 동시에 데이터를 생성하게 되면 문제가 발생한다. 해결 방법 : 공유 데이터에 lock 을 걸어서 다른 producer 및 consumer 가 접근하지 못하도록 방지한다. 그 후, 데이터 입력 작업이 끝나면 Lock 을 해제 하여 다른 producer나 consumer가 접근할 수 있도록 한다. 그리고 full buffer를 하나 증가시킨다. (buffer count) 2) Consumer 발생할 수 있는 문제 ..
Critical Section Problem n개의 프로세스가 공유데이터를 동시에 사용하기를 원하는 경우 발생하는 문제 각 프로세스의에서 공유 데이터를 접근하는 코드를 critical section 이라고 한다. 하나의 프로세스가 critical section 에 있을 때 다른 모든 프로세스는 critical section에 들어갈 수 없어야 한다. 임계 구역 문제를 'Software' 적으로 해결하는 방법 Mutual exclusion (상호 배타) : 한 프로세스가 critical section 부분을 수행하고 있다면, 다른 프로세스들은 그들의 critical section 에 들어가지 않는다. 즉, critical section에 꼭 하나의 프로세스만이 진입할 수 있다는 조건이다. Progress ..
스케줄링 알고리즘은 크게 non-preemptive / preemptive 방식으로 나뉘게 된다. Scheduling Criteria 성능 척도 CPU utilization (이용률) : 전체 시간중에서 CPU 가 일한 시간. CPU 는 가능한 busy 해야 한다. - CPU 는 비싼 자원이기 때문에 효율적으로 활용하기 위해서는 CPU 는 항상 일을 해야 한다. Throughput (처리량) : 주어진 시간동안 몇개의 프로세스들을 완료 했는가 Turnaround time (소요시간, 반환시간) : 특정 process를 실행하는데 걸리는 시간 Waiting time (대기 시간) : 프로세스가 ready queue에서 대기하고 있는 시간 Response time (응답 시간) : 요청이 왔을 때 처음으로 ..
CPU & I/O burst CPU burst : CPU를 사용하여 작업하는 부분 I/O burst : I/O 작업을 수행하는 부분 프로그램은 CPU burst 와 I/O burst 번걸아서 연속적으로 실행된다. CPU Burst Time의 분포 I/O bound job : CPU 를 잡고 계산하는 시간 보다 I/O에 많은 시간이 필요한 job 이다. 위의 그래프에서 알 수 있듯이 CPU burst를 짧게, 빈도는 많이 사용할 것이다. CPU bound job : CPU를 잡고 계산을 위주로 하는 job이다. CPU를 길게 연속적으로 사용하며 CPU burst 빈도는 적게 일어난다. 여러 종류의 job (= process) 이 섞여 있기 때문에 CPU 스케줄링을 통해, 자원을 효율적으로 사용해야 한다. ..
minjiwoo
'Computer Science/운영체제' 카테고리의 글 목록