운영체제

    [Operating System] Semaphore

    Locks 쓰레드는 서로 메모리를 공유한다. 따라서 공유변수가있다. 여러 쓰레드가 모두 변수의 값을 read하는 경우 문제가 발생하지 않지만, 특정 쓰레드가 변수의 값을 write하면 동기화 문제가 발생한다. 이를 해결하기 위해서는 한 thread가 변수를 write할 때에는 다른 thread가 해당 변수에 접근할 수 없도록 lock을 걸어주는 과정이 필요하다. lock~unlock의 구간을 critical section(임계 영역)이라고 한다. critical section은 해당 영역 내의 다수의 명령어를 atomic(원자적)하게 실행되도록 보장한다. 마지막으로 starvation이 발생하지 않아야 한다. mutual exclusion (상호 배제) critical section에는 어느 시점에서든 ..

    [Operating System] Page Replacement

    Paging Replacement Policy 메모리 모든 페이지프레임이 사용중인 상황에 SWAP에 위치한 페이지프레임을 참조하는 상황이 발생할 수 있다. 메모리 페이지프레임중 하나를 SWAP의 페이지프레임과 교체해야한다.(PAGE FAULT) PAGE FAULT가 자주발생하는것 - 쓰레싱. PAGE FRAME이 미래에 얼마나 참조될지 예측하는것. 과거의 경향을 근거로 예측한다. OPTIMAL 미래에 참조될 PAGE순서를 모두 아는 상태에서 앞으로 참조까지 시간이 가장 긴 PAGE를 교체한다. FIFO 먼저 들어온 페이지가 먼저 나가는 단순 큐. 쉽지만 구현이 어려움 LRU 가장 오랫동안 참조되지 않은 페이지를 교체 각 page frame마다 가장 최근에 참조된 시각을 기록해야 하는데, 성능이좋지않다. ..

    [Operating System] Segmentation

    세그멘 테이션 사용자 프로그램은 세그먼테이션 기법을 이용하여 프로그램과 그 데이터들이 여러 세그먼트로 나눔 하지만 프로세스를 물리적인 단위인 페이지 말고 논리적 내용 단위인 세그먼트로 자를 수 있는 세그먼테이션 방법이 있다. 세그멘테이션은 프로세스를 세그먼트의 집합으로 생각한다. 그래서 세그먼테이션은 물리적인 크기의 단위가 아닌 논리적 내용의 단위(의미가 같은)로 자르기 때문에 세그먼트들의 크기는 일반적으로 같지 않다. 세그먼테이션 번호와 오프셋 두개의 영역으로 구성 세그먼트 기반 주소 변환 가장 왼쪽의 n비트는 세그먼트 번호이고, 가장 오른쪽 m비트는 오프셋인 n+m비트로 이루어진 주소 n= 4 , m=12 세그먼트 최대크기는 4096 주소변환 과정 논리주소의 왼쪽 n 비트를 세그먼트 번호로 추출 이 ..

    [Operating System] Paging Mechanism

    페이징 메카니즘 고정분할/ 가변분할 기법은 내부단편화, 외부 단편화로 문제점이 존재함. 페이징은 이런 단점 해결 위해 고안된 방식이다. 페이징 사용시 외부단편화는 발생하지 않으며 내부 단편화는 아주적은횟수 발생함 paging이란 memory 가상화에서 가상 주소와 물리 주소를 mapping시킬 때에 page frame을 단위로 하는 방식이다 Paging이란 가상주소공간을 일정한 크기의 Page 로 나누는 것을 말한다. 가상 메모리 - 페이지(블록) 가상주소공간의 Page가 물리적 메모리의 어떤 Page Frame에 저장되는지를 Page Table 에 기록한다. 물리 메모리 - 프레임(블록) 물리적 메모리는 이런 Page들을 담기 위한 영역으로 나누는데 이를 Page Frame 페이지 테이블 OS는 각 프..

    [Operating System] Address and Memory

    EARLY SYSTEM 컴퓨터의 물리메모리 : 초기 운영체제 메모리에 상주하는 루틴의 집합 물리메모리에 하나의 실행중인 프로그램이 존재 특별한 가상화에 대한 개념 없었음 STACK, HEAP, DATA, TEXT MULTI PROGRAMMING 여러 프로세스가 실행 준비 상태 OS 는 프로세스를 CPU에게 전환하면서 실행 이 과정을 계속 반복하는 것은 TIME SHARING(시분할) 기존에 실행되던 프로세스 상태를 디스크에 저장하는데 디스크에 저장하는것은 IO가 발생하므로 느리다. 또한 다르프로세스 메모리공간침법 위험도이썽서 프로세스간 ISOLATION이 보장안되었다. Virtual Memory 이런 문제 해결 위해 메모리 가상화 개념 도입 각 프로세스마다 가상의 메모리 주소 체계를 도입해 실제 물리 메..

    [Operating System] 공평한 스케줄러

    Proportional Share 비례 지분 = 공정 배분 특정 비율로 cpu를 배분하는 스케줄러 Lottery Schedueling 복권 확률에 의한 ticket = lottery ticket 프로세스가 받아야할 자원의 몫 a가 75 b가 25장이면 a는 75%cpu 할당 공평하니까 이렇게함 lottery scheduling time quantum이 끝날 때 마다 확률적으로 ticket을 선택 추첨방식 ticket currency 기법 사용자가 추첨권을 화폐가치로 티켓을 마음대로 할당함 시스템은 화폐가치를 글로벌 화폐가치로 변환 USER ↔ JOB ↔ PROCESS 이렇게 하는 이유는 프로세스 개수와 관련이있다. 3개면 0.333이런식으로 되기때문 .. TICKET TRANSFER 프로세스는 다르프로세..

    [Operating System] MLFQ Multi-level Feedback Queue Scheduling

    Multi-level Feedback Queue Scheduling RR은 응답시간은 단축시키나 반환 시간은 최악(너무 자주 잘라서) MLFQ는 이러한 RR의 한계점을 극복하기 위해 고안해낸 방법이다 RR의 장점인 짧은 평균 응답 시간은 유지하면서, RR의 단점인 짧은 task의 불리함을 해결하자는 것이다. RR에서는 Queue를 1개만 운용했다면, MLFQ는 다양한 Time Quantum을 가지는 여러 Queue를 동시에 운용한다. Turn around time의 최적화 → 짧은 작업 우선 MLFQ 는 대화식 사용자에게 응답시간을 최소화 → 빠르시스템인것처럼 느끼게 여러 개의 Queue는 상단에서 하단으로 내려갈수록 Time Quantum은 길어지고, 이는 당연히 process가 CPU를 점유했을 시 ..

    [Operating System] 스케줄링

    단기, 중기 ,장기 스케줄링 장기 스케줄링 프로세스가 cpu에 의해 실행될 수 있는 자격을 부여할지 말지를 결정 중기 스케줄링 프로세스 이미지 전부 혹은 일부가 주 메모리에 올라올 수 있는 자격을 부여할지 말지 결정 단기 스케줄링 cpu에 의해 실행될 다음 번프로세스로 어떤 프로세스를 선택할지를 결정 ready 상태를 많이 만들어서 cpu가 일하도록 만든다. Workload assumptions workload 일련의 프로세스들이 실행하는 상황 프로세스가 얼마나 cpu를 차지하는지 가정(비현실적) 각 작업은 동일한 시간동안 실행 모든 작업은 같은 시간에 도착 각 작업은 시작되면 완료될때까지 실행 모든 작업은 cpu만 사용(io 없다고 가정) 각 작업 실행 시간은 알려져 있다고 가정 평가 기준 Turn a..

    [Operating System] 프로세스 실행

    for and exec 함께 사용하지 않은 이유 fork와 exec을 분리시켜 새 프로그램을 실행하기 전 다양한 설정과 IO redirection과 pipe를 가능하게 하려고 프로세스 실행 OS가 프로그램 실행을 시작하려면 process list에 새로운 항목을 생성한다. 이후 메모리 페이지 할당. 디스크에있는 프로그램 실행파일을 메모리페이지에 로드. 진입점으로 포인터를 위치한다. 문제점 프로세스가 원치 않는 일을 하지 않는다는 보장할 수 있는가? 프로세스 실행 시 OS가 이를 중단시키고 다르 프로세스를 실행시킬수 있는가?(time sharing) OS가 실행 프로그램 제어못하면 OS가아니라 라이브러리 문제1 : 제한된 연산 프로세스가 특수한 형태의 연산을 수행시키려면 ? IO, 메모리 접근 프로세스에게..

    [Operating System] 프로세스

    Process / Program 프로그램 disk에 위치한다. 프로세스 disk에 위치한 program file을 메모리에 올린 것이다. runnable program. 프로세스의 구성 프로세스는 기본적으로 메모리에 위치한다. Stack, Heap, Data, code 영역으로 구분된다. 0번지는 stack의 처음이며, 끝은 code의 끝이다. process 는 memory 외에도 register도 있다. program counter, stack pointer 등이 있다. pc는 다음 실행 명령어 가리키며 sp 는 stack내의 특정 공간 위치 저장해준다 프로세스 생성 fork와 같은 시스템콜을 사용해 프로세스를 생성한다. 프로세스 생성 = 프로그램을 메모리로 load 하는 작업 (프로세스의 주소공간으로..