강의/OS

    OS - 가상 메모리

    OS - 가상 메모리

    목차가상메모리(가상주소공간, Demand Paging, Free frame list)페이지 교체(FIFO, OPT, LRU, LFU, second chance)Thrashing Prevention(Thrashing, working-set 모델) 배경코드가 실행되기 위해서는 메모리에 있어야 하지만 전체 프로그램은 거의 사용되지 않고 보통 프로그램의 일부만이 반복적으로 사용됩니다. 그래서 우리는 굳이 프로그램 전체를 메모리에 올리는게 아니라 부분적으로 필요한 부분만 올리는 방법을 사용하고 그 덕분에 효율적인 메모리 사용으로 더 많은 프로그램을 동시에 돌릴 수 있고, 메모리에 프로그램 일부만 로드/스왑하기 때문에  더 적은 I/O 만으로도 가능하니 각 사용자 프로그램은 더 빠르게 돌릴 수 있습니다. 가상 메모..

    OS - 메인메모리(Main Memory)

    OS - 메인메모리(Main Memory)

    목차배경(배경, 주소 바인딩, 동적 로딩/링킹)메모리할당(연속 메모리 할당, 가변 파티션, 단편화)페이징페이지 테이블 구조(계층, 해시, 역)스와핑 배경프로세스는 실행 중인 프로그램을 뜻하는데, 여기서 실행 중이라는 뜻은 프로그램이 메인 메모리에 올라갔다라는 의미입니다. 기본적으로 프로세스는 디스크(SSD, HDD...etc)에 프로그램(코드)를 메모리에 불러오는 것입니다.메인 메모리(RAM)와 레지스터는 오직 CPU만 직접적으로 엑세스할 수 있는 저장장치(Storage) 입니다. 레지스터에 접근하는 것은 1 CPU 사이클 혹은 더 적은 시간 내에 완료되지만 메인 메모리에 접근은 여러 사이클이 걸릴 수 있습니다. 캐시는 메인메모리와 CPU 레지스터 사이에 위치합니다. 프로세스가 메모리에 올라가 있다면 각..

    OS - Deadlock

    OS - Deadlock

    목차 데드락 데드락 방지 데드락 회피 데드락 허용(탐지, 회복) 데드락 무시 데드락(Deadlock, 교착상태) 데드락? OS에서 데드락이란, 2개 이상의 작업이 서로 상대방의 작업이 끝나기만을 영원히 기달려서 결국 아무것도 하지 못하고 있는 상태입니다. 데드락은 아래 4가지 필요 조건을 다 만족해야지 발생합니다. 1. 상호 배제(Mutual Exclusion) : 한 순간에 오직 하나의 프로세스만 자원을 사용할 수 있어야 합니다. 2. 점유 대기(Hold and wait) : 자원을 적어도 하나 보유하고, 다른 프로세스가 점유하고 있는 자원을 얻기 위해 대기하는 프로세스가 있어야 합니다. 3. 비선점(No preemption) : 비선점 형태로 Task가 끝나야지만 자원을 놓아야 합니다. 4. 순환 대..

    OS - 동기화 예시

    OS - 동기화 예시

    목차 생산자 소비자 문제 (Producer-Consumer) 독자-저자 문제 (Reader-Writer) 식사하는 철학자 문제(Dining-Philosophers problem) 커널 동기화 동기화 예시(Synchronization Examples) 클래식 동기화 문제 3가지 Bounded Buffer problem = 생산자-소비자문제(Producer-Consumer problem) Readers and Writers problem Dining-Philosophers problem 생산자-소비자 문제(Producer-Consumer, Bounded Buffer problem) 생산자-소비자 문제는 여러 개의 프로세스를 어떻게 동기화할 것인가에 관한 고전적인 문제입니다. 한정 버퍼 문제(Bounded b..

    OS - 동기화 툴

    OS - 동기화 툴

    목차임계구역(Critical Section)Peterson's Solution동기화를 위한 하드웨어 지원(메모리 배리어, 하드웨어 명령, 원자적 변수)뮤택스 락세마포모니터LivenessLock Free동기화 툴(Synchronization Tools)배경(Background)프로세스는 병행/병렬 실행이 가능합니다. 이때 여러 프로세스가 동시에 공유 데이터에 접근하여 경쟁 상태(race condition)가 발생해 데이터에 불일치가 생겨 데이터 무결성에 문제가 생깁니다. 멀티코어, 멀티 스레드 개발이 중요해지면서 자원 공유 가능성이 높은 여러 스레드를 경쟁 상태가 더 빈번해집니다. 이를 위해 각 스레드를 의도에 맞춰 동기화할 필요가 있습니다.*경쟁 상태(race condition)란 공유 자원에 대해 여러..

    OS - CPU Scheduling

    OS - CPU Scheduling

    목차CPU 스케줄링 (선점/비선점 - preemptive/nonpreemptive, Dispatcher)스케줄링 알고리즘 (FCFS, Round-Robin, SJF ...etc)스레드 스케줄링 (멀티 스레드 멀티 코어, Load balancing, 캐시 선호도)실시간 CPU 스케줄링 (Event latency, Rate monotonic, EDF)실제 OS 사례 CPU Scheduling컨셉 : "대부분의 작업은 CPU 사용이 짧다. → CPU가 작업 사이 쉬는 시간(메모리 로드/스토어)에 다른 작업을 시켜 쉬지 못하게 한다"를 통해 CPU 활용을 끌어 올리는것이 메인 컨셉입니다. 이유는 CPU, I/O, Memory에 작업 속도, 시간이 다른 점에서 각 작업들을 효율적으로 배분하는 생각입니다.CPU S..

    OS - Thread

    목차스레드스레드 라이브러리(POSIX Pthread)프로세스와 스레드에 대한 고찰스레드풀OpenMPTLS(Thread - Local Storage) 스레드(Thread)애플리케이션은 여러 작업(task)를 할 수 있습니다. 디스플레이를 업데이트하고, 네트워크 통신을 하며, 데이터를 가지고 올 수도 있습니다. 이때 여러 프로세스로 각각의 일을 하는 것보다 한 프로세스가 내부에서 여러 실행 흐름, 실행 유닛을 가지는 방식이 더 단순한 코드와 효율성 증대되고 더 가볍습니다. 커널과 많은 프로그램이 현재 멀티스레드 방식을 사용합니다.프로세스 속 스레드는 스택, PC(Program Counter. 레지스터 실행 위치), 레지스터를 제외하고 code, data, files, heap 공간을 공유합니다. 프로세스는 ..

    OS - Processes

    OS - Processes

    프로세스 (Process) 목차프로세스프로세스 State간단 스레드프로세스 스케줄링Context Switch프로세스 생성프로세스 통신 프로세스 (Process)컴퓨터에서 실행되고 있는 프로그램으로, 하드디스크에 저장되어 있는 프로그램을 메모리에 할당한 상태인 프로그램입니다. 프로그램 = Passive, 프로세스 = Active프로세스의 메모리 영역은 아래와 같은 부분들로 구성되어 있습니다.프로그램 카운터, 프로세서 레지스터Text or Code: 프로그램 코드 저장 부분 - passiveData : 초기값 있는 전역 변수, 정적 변수 - passiveBss : 초기값 없는 전역 변수, 정적 변수 - passiveHeap : 동적할당 변수 공간 - active공유 라이브러리 : 공유 라이브러리 공간Stac..