CS/OS (12) 썸네일형 리스트형 [OS] I/O Systems & File-System Interface I/O System 컴퓨터가 가장 많이 하는 작업은? I/O 작업이 압도적으로 작업량이 많다. PCIe bus 해당 버스형 구조에 각종 컨트롤러가 달려있고 이를 디바이스가 처리할 수 있도록 cpu가 전부 관리해준다. Memory-Mapped I/O I/O address에 device연결할 수있도록 메모리를 주소를 맵핑 시켜둬서 제어를 한다. three types of I/O polling : busy-waiting(계속 확인) interrupt : interrupt service routine에 제어권을 넘겨줘서 활용, interrupt vector table을 이용한다. DMA : register를 통해 load store move 등 작업을 기다리기 싫을 때 하드웨어 버스를 통해 바로 접근한다 syn.. [OS] Storage Management Mass-Storage 정의 non-volatile(비휘발성)으로 secondary storage system. HDD, NVM, magnetic tapes, 광역디스크(optical disk) , cloud storage → RAID system 적용 HDD 원리 spindle로 돌아가면서 읽는데 시간 당 얼만큼 많이 도는지로 성능 측정 가능. HDD 스케줄링 seek time을 최소화, bandwidth를 최대화 하자 seek time : 실린더가 돌아가면서 특정 섹터를 찾아가는데 걸리는 시간 disk bandwidth : sector가 클수록 한번에 전송할 수 있는 용량이 크다. 시간당 전송 용량 HDD 스케줄링 방법 FIFO Scheduling SCAN Scheduling - 왔다갔다하면서 읽기 .. [OS] Virtual Memory Background Virtual Memory 프로그램이 피지컬 메모리보다 클 경우에도 프로세스가 실행되도록 하는 테크닉 Virtual Address Space Virtual Memory 장점 여러 프로세스가 page를 공유 할 수 있다. Demand Paging 프로그램(하드웨어)가 실행되어 프로세스(메모리)로 바뀌는 내부동작 저장소에서 메모리로 올라간다 모든내용을 피지컬메모리에 올리지 않는다.(아두이노 등 제외) page로 분할 시키고 요청 될 때만 부분만 올린다(=demand paging) Page Fault 프로세스의 일부(page)가 시작을 하기전 page table을 확인한다 프로세스의 원하는 페이지가 메모리에 있는지 확인한다 만약 invalid하다면, page를 메모리에 넣어줘야한다 free.. [OS] Main Memory Background 프로세스란 실행 중인 프로그램이며, main memory에 올라간 상태이다. 메모리 구성 바이트(비트 8개) 단위로 Array가 쭉 나열되있는 상태이며, 각 주소가 할당되어있다. CPU는 memory에서 instructions을 fecth해온다 → program counter에서 가져옴 가져온 메모리 역시 load 또는 store한다 메모리 구성 프로세스는 메모리 공간을 분할해서 사용한다 base register && limit register을 가지고 합법적인 주소를 할당한다 잘못짜면 segmentation fault 발생 Address Binding 우리는 상징적으로 메모리 번지(ex int n = 3)를 저장한다 해당 메모리를 컴파일러가 relocatable 주소라고 불리는 논리.. [OS] Deadlocks System Model Deadlock이란? 모든 프로세스가 대기하고 있는 상태 해당 상태를 못 바꾼다. 다른 프로세스를 통해서 상태를 바꿔야하기에. 쓰레드가 리소스가 필요할 경우 동작 방식 Request - Use- Release 이며, Use단계에서 임계영역이 고려된다. Dead lock 발생할 때의 필요한 조건 상호배제가 필요할 때 Hold and Wait - 점유하고 대기를 할 때 No preemption - 자원을 못 뺏어오고, 선점이 불가할 때 Circular Wait - dependency 그래프가 순환할 때 Deadlock Characterization Resource-Allocation Graph T→R - T가 인스턴스 R을 요구한다 R→T - R이 T에 할당되어있다 데드락의 전형적인 .. [OS] Synchronization Examples Classic Problems of Synchronization Bounded-Buffer Problem Producer-Consumer Problem C기준 wait, signal의 대칭 구조가 맞아야한다. Pthread로 해결하기 뮤텍스로 P-C모델을 구현한다 세마포어로 버퍼를 관리한다. sem_wait → 세마포어를 1개 감소시킨다. 여기에서 empty가 0이라면 1개가 증가할 때 까지 대기한다. sem_post → 세마포어를 하나 증가시킨다. empty, full의 세마포어로 버퍼 안에 여러개 쓸 수 있도록해주고 버퍼를 고칠 때는 mutex lock으로 상호배제가 되도록 하고있다. 세마포어의 wait, signal → 자바의 모니터락을 이용한 wait, notify Readers-Writers P.. [OS] Synchronization Tools - part2 Mutex Locks Soft : Peterson Hard : special instruction set → Atomic Variable은 어렵다. High level에서 좀 더 쉽게 다룰 수 있는 소프트웨어 툴이 있을까? Mutex Locks 특징 동기화를 간단하게 해주는 툴 열쇠를 획득 반납 하는 과정으로 상호배제를 보장 acquire, release로 섹션을 나누고 available 변수로 판단한다. 위 의 키워드의 atomically는 보장되야 하고, 어떻게 보장할지는 커널 개발자가 고민하자 문제점 busy waiting : acquire이 쓸데없이 CPU자원 사용한다. spin lock : CPU자원이 많다면, busy waiting덕분에 ready 상태로 기다릴수 있다. Semaphore Se.. [OS] Synchronization Tools - part1 Background Cooperating process share a logical address space → thread share data → share memory or msg passing 프로세스가 동시에 돌아가며 데이터를 공유하려면? 데이터의 일관성이 유지되야함 실행 순서가 지켜져야 데이터가 유지된다 데이터의 값이 모호해지는 경우 Concurrent execution : 프로세스가 작동 중에 다른 프로세스에게 넘기는 경우 Parallel execution : 분리된 CPU에서 프로세스가 동시에 돌아가는 경우 concurrently한 동작의 문제점(P-C모델의 비동기 상태) 기계어 과정으로 생각하면, 위의 과정이 순서대로 일어나지 않는다 . context switch는 끝까지 기다리지 않는다... 이전 1 2 다음