CS/Operating System

    [OS] Process Syncronization

    Background 공유된 데이터에 동시에 접근해서 write을 하는 것은 데이터 불일치를 유발할 수 있다. 이렇게 공유된 데이터를 동시에 여러 프로세스가 건드리는 상황을 Race condition이라고 한다. 결과적으로 최종값은 누가 그 데이터를 마지막으로 건드렸냐에 달려있게 된다. 이런 Race condition을 막기 위해 병렬로 실행되는 프로세스들은 동기화(synchronized)되어야 한다. The Critical-Section Problem 그럼 Critical-Section Problem, 임계 구역 문제가 무엇인지부터 살펴보자. n개의 프로세스들이 공유된 데이터를 사용하기 위해 경쟁하고 있다고 가정해보자. 각각의 프로세스들은 공유된 데이터에 접근하는 코드 부분인 critical sectio..

    [OS] Virtual Memory

    Virtual Memory (= Logical Memory) 메인 메모리의 크기는 한정되어 있다. 그렇다면 메인 메모리의 크기보다 큰 프로세스를 실행시키고 싶으면 어떻게 해야 할까? 이를 위해 나온 개념이 Virtual Memory, 가상 메모리이다. 실행을 위해 프로그램의 모든 부분이 필요한 것은 아니다. 따라서 필요한 부분만 Physical Memory에 적재하고 전체가 다 적재된 것처럼 사용하기 때문에 Physical Address Space보다 Logical Address Space가 더 크다. 주소 공간을 여러개의 프로세스가 공유할 수 있도록 해준다. 더 효율적인 프로세스 생성이 가능하게 해준다. 페이지들이 swap in & swap out 될 수 있게 해줘야 적용이 가능하다. Demand pa..

    [OS] Memory Management

    Background - 프로그램은 실행을 위해 디스크에서 메모리로 적재되어야 함 - 메인 메모리와 레지스터들이 CPU가 접근할 수 있는 유일한 저장소임 - 레지스터에 접근하는 것은 1 CPU clock cycle 이하로 소요됨 - 메인 메모리에 접근하는 것은 수많은 cycle들을 소요할 수 있음 - Cache 접근은 메인 메모리에 접근하는 것과 CPU 레지스터에 접근하는 것 사이만큼의 시간이 소요됨 - 올바른 작동을 보장하기 위해 메모리 보안이 필요함 Memory Address Binding Memory Address Symbolic Address: 코드 단에서 설정하는 address (ex. a = 10) Virtual(Logical) Address: 프로그램이 이상적으로 사용하는 주소 체계 Physi..

    [OS] CPU Scheduling

    [OS] CPU 스케줄러 CPU 스케줄러란 ready queue에 들어있는 프로세스들의 CPU 점유 순서를 정하는 알고리즘이다. CPU 스케줄러 이번에 얘기하는 CPU 스케줄러는 저번 포스팅에서 언급했던 ready queue에 있는 프로세스들의 CPU 점유 순서를 정하는 알고리즘을 말함 오늘은 이 CPU 스케줄러의 종류에 대해 좀더 자세히 알아보고자 함 CPU 스케줄러가 결정을 내리는 부분 running -> waiting (비선점형) running -> ready (선점형) waiting -> ready (선점형) terminates (비선점형) Dispatcher: CPU의 제어권을 CPU Scheduler에 의해 선택된 프로세스에게 넘김. dispatcher의 처리속도가 빠르면 빠를 수록 좋음 Sc..

    [OS] Process and Thread

    Process Process: 실행중인 프로그램 = 즉, 실행파일이 메모리에 적재되고, CPU를 할당받아서 명령 수행중인 상태 이때, 실행파일 전체가 메모리에 올라가지 않고 일부만 올라감 + 나머지는 디스크의 특정 영역에 존재 어쨌든 프로세스를 위해 제공된 메모리가 어떻게 구성되어 있는지 알아야함. 어떻게? Process 메모리의 구성요소 Code(Text) 실행할 프로그램의 코드가 저장되는 영역 CPU는 코드 영역에 저장된 명령어를 하나씩 가져가서 처리함 Data 프로그램의 전역 변수와 정적(static) 변수가 저장되는 영역 프로그램의 시작과 함께 할당되며, 프로그램이 종료되면 소멸함 Stack 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역 함수의 호출과 함께 할당되며, 함수의 호출이 ..

    [OS] Computer System Overview

    Processor(CPU) program vs process vs processor Program: 일반적으로 하드 디스크 등에 저장되어 있는 실행 코드 Process: program을 구동하여 program 자체와 program의 상태가 메모리 상에서 실행되는 작업 단위 Processor(CPU): 제어장치, 연산장치, 레지스터 그리고 데이터 버스로 구성된 디지털 시스템의 핵심 부분. 프로그램을 기억장치로부터 읽어 데이터를 처리하고 각종 장치를 구동. ex) 하나의 프로그램을 여러 번 구동하면 여러 개의 프로세스가 메모리 상에서 실행됨 ex) 프로세서는 프로그램을 기억장치로부터 읽어와 구동시킴. 구동시킨 프로그램이 프로세스. 프로그램 실행 과정 1. 사용자가 단축 아이콘 혹은 명령행에서 프로그램을 실행..

    [OS] Process 동기화 (3) Deadlock

    [OS] Process 동기화 (3) Deadlock (교착상태) Deadlock란, 프로세스에 자원이 잘못 분배되었을 때 일어난다. 간단히 말하자면, 만약 한 프로세스가 자원 A를 가지면서 자원 B를 요구한다고 가정해보자. 이 상태에서 다른 프로세스가 자원 B를 가지고 있으면서 A를 요구하고 있는 상황이라면 이도저도 못하는 상태가 되어 버린다. 이를 deadlock이라고 한다. Deadlock에 빠지는 조건 4가지 교착상태에 빠지는 조건은 총 4가지가 있다. 이 4가지 조건을 모두 만족할때 교착상태에 빠지게 된다. Mutual Exclusion (상호배제) : 한번에 오직 하나의 프로세스가 하나의 자원만 사용 Hold and Wait (점유하고 대기): 자원을 할당받은 상태에서 다른 프로세스가 사용중인..

    [OS] Process 동기화(2)

    [OS] Process 동기화(2) 전통적 동기화 예제 Producer-Consumer Problem 생산자가 데이터를 생산 -> 소비자가 그 데이터를 소비하는 형태 예시: 컴파일러->어셈블러, 웹 서버->웹 클라이언트 생산한 데이터는 중간의 buffer라는 저장공간에 저장해두고 소비자는 여기서 필요한 만큼 가져감 동기화 문제: 생산자와 소비자가 동시에 접근하는 변수를 동시에 업데이트, 즉 임계구역에 동시에 접근 Readers-Writers Problem 임계구역에 접근하는 프로세스의 종류를 reader와 writer로 나눈다. reader는 임계구역에서 데이터를 바꾸지 않고 읽기만 하는 프로세스, writer는 임계구역에서 데이터를 바꾸는 프로세스를 말한다. 여기서 writer는 mutal exclus..