프로그래밍[Univ]/운영체제 18

[OS] File System

* File 유지사항 1) File Pointer : Process가 Disk에 위치를 가르키는 포인터 2) File Open count : 몇 명이 이 파일에 접근해 있는가 3) Disk location of the file : data 접근 정보를 cache에 저장 4) Access rights : "per-process(process가 read만할지 write도 가능한지를 분별)"정보 > Mandatory : 여러 파일이 동시에 수정되는 것을 금지 > Advisory : 여러 파일이 동시에 수정되는 것을 권고사항으로 둔다. SW개발에 따라 달라짐 * File Access Methods - Sequential : 앞에서부터 순차적으로 Access한다. - Direct : 직접적으로 특정 위치로 Acc..

[OS] Virtual Memory part 2 (Kernel)

* Allocation Kernel Memory - Kernel : PCB와 같이 Resource에 해당하는 structure에 관련된 request를 실시한다. (structure memory allocation) - Process와 다르게 Kernel이 하는 것은 알 수 있다. - 때때로 contiguous memory allocation을 실시한다 > I/O buffer 용도 - Allocation 실패가 발생하면 안되기 때문에 free Memory poll을 미리 만들어 둔다. * Buddy System Allocation - Memory size가 수용 가능한 크기로 나눈다. (2^n allocation 방법) - 만약, 256 kb memory가 존재한다면, 128.x ~ 256 : 256 6..

[OS] Virtual Memory

* Virtual Memory의 탄생 P1, P2, P3를 수행할 때에는 Swapping 기법으로 Process를 돌려가면서 모두 사용이 가능하다. 여기서 Disk가 들어가지면 이런 측면에서 Virtual memory가 나온 것은 아니다. virtual memory의 탄생은 다음과 같은 문제를 해결하기 위해서 탄생했다. Memory공간이 400이 필요한 프로세스를 300짜리 memory공간에서 어떻게 실행 할 것인가? 즉, 자신의 Memory보다 더 큰 공간이 필요한 프로세스를 어떻게 실행 시킬 것인가의 문제를 해결하는 것이다. > 프로그램을 분할하여 사용하는 것만 Memory에 올리자!! 사용하지 않는 것은 DISK(Virtual Memory)에 저장하자!! * Virtual memory - 프로그램을..

[OS] Main Memory Part 2

Paging의 문제점과 그 해결법, 그리고 기타 메모리 관련된 것, Segmentation 기법을 배우는 페이지이다. * Q1. Memory Access 수, 시간 - Page-table은 Main memory에 저장된다. - Page-table에 관려된 2가지 상태를 register에서 가져온다. 1) Page table base register(PTBR) : Page table 시작지점 2) Page table length register(PTLR) : Page table 길이 - Data를 가져오거나 특정 메모리를 지칭하기 위해서는 2단계가 필요하다. 1) Page table에 접근하여 Physical Address를 계산하는 경우 2) Main Memory를 지칭하거나 데이터를 가져오는 경우 - ..

[OS] Main Memory

* Main Memory - Issue > Memory Utilization > Memory Speed > Virtual Memory ( Memory Size ) - background > program이 실핻되려면, memory에 process가 올라가야 한다. > CPU가 직접적으로 접근 가능한 memory = Main memory, register ( cache X ) > MMU(Memory Unit) : "주소 + 읽기 요청", "주소 + 쓰기(데이터)" 요청을 처리 > Register speed > Memory speed * Base and Limit Register - 어떤 Process는 특정 시작 위치(Base)부터 Limit(Process의 최대 용량)까지만 Access가능하다. - lo..

[OS] DeadLock

* The Deadlock Problem - 리소스를 갖고 있으면서, 다른 Process가 갖고 있는 리소스를 원하는 프로세스 이런 프로세스들의 집합으로 집합 내에서 서로의 리소스를 원하는 것 - Resource Type = Rn - Resource Instance = Wn ex) 3개의 모니터가 연결된 컴퓨터에 대한 모니터 타입 R1은 3개의 instance W1,W2,W3를 갖고 있다. - 모든 process는 resource를 요청하고, 사용하고, 해제하는 과정을 갖는다. * Deadlock이 생기는 겅우 - 다음 4가지의 상태를 모두 만족해야 한다. ⓐ Mutual Exclusion : 오직 하나의 process만 instance에 접근 ⓑ Hold and wait : resource를 갖고 있는..

[OS] Solve Problem Using Semaphore

* Sharing Resource 문제는 Semaphore로 해결할 수 있고 다음과 같은 과정을 따른다. ⓐ 문제 인식 ⓑ 각 문제에 대해 해결할 semaphore와 공유되는 resource에 대한 semaphore 만들기. ⓒ Semaphore의 초기 값을 설정 : 초기값은 접근 가능한 resource or process의 개수로 semaphore가 보호하는 값의 개수이다. ⓓ 각 문제에 대한 해결을 Source에 적용한다. * BBP ( Bounded Buffer Problem ) ⓐ 문제 인식 - Producer cannot write when full, but wait until not full. - Consumer cannot read when empty, but wait until not em..

[OS] Process Synchronization

* Shared Memory에서 발생하는 문제 - Concurrency : 하나의 공유 데이터에 동시 접근할 때 발생하는 문제 (데이터가 비일관적이다. data inconsistency) > 이러한 문제를 해결하기 위해서 협동하는 process에서의 실행순서가 중요한 문제로 작용. - Circular array로 구현시 저장공간을 100% 사용이 불가능하다. > counter변수를 생성하여 process숫자를 관리한다. - producer와 consumer가 동시에 동작을 한다면 실행순서에 따라 다른 결과가 나올 수 있다. 이런 경우를 race control이라고 한다. 또한 이로 인해 발생하는 문제를 critical section problem이라고한다. * Critical Section problem..

[OS] CPU Scheduling(Sort-term Scheduling) Part 2

* Multilevel Queue - Queue를 여러개로 나눠서 관리. Queue끼리의 process 이동을 금지. ex) Ready queue를 두개로 분할 Q에 대한 대답 ⓐ Fixed priority scheduling : foreground에 process가 있다면 무조건 foreground것부터 실행 ⓑ foreground 80%, batch 20% : 이와 같이 비율로 나눠서 실행 > 2가지의 방법이 발생하며, ⓐ의 경우에 starvation문제가 발생한다. 이 starvation을 해결하기 위해서 Multilevel feedback queue가 탄생 * Multilevel Feedback queue - starvation을 방지하기 위해 aging효과를 준다. - aging이 올라가면 pr..

[OS] CPU Scheduling(Sort-term Scheduling) Part 1

* First Come First Served(FCFS) - 들어오는 순서대로 실행하는 가장 간단한 스케쥴링 법 - Non-Preemptive ex) Waiting Time : P1 = 0, P2 = 20, P3 = 25 Average Waiting time = ( 0 + 20 + 25 ) / 3 = 15 * Shortest -Job-First(SJF) - ready queue에 존재하는 process들의 Burst Time을 미리 추측가능해야한다. - SJF는 평균 대기시간을 가장 짧게 해주는 최적의 알고리즘이다. 그러나, CPU brust time을 추측해야 한다. > Process의 다음 burst time 추측은 다음에 의거한다. Tn+1 = a*tn + (1-a)Tn T : 추측시간 / t : ..