운영체제 14

02. Introduction To Operating System

운영체제란? 운영체제는 컴퓨터 하드웨어 바로 윗단에 설치되는 소프트웨어로, 컴퓨터 하드웨어와 각종 소프트웨어, 그리고 사용자를 연결해주는 계층을 말한다. 좁은 의미의 운영체제 좁은 의미로 이야기하는 운영체제를 커널이라고 부른다. 운영체제의 핵심적인 부분을 커널이라고 부르고, 컴퓨터를 부팅한 후부터 계속 메모리에 올라가 있다. 넓은의미의 운영체제 넓은 의미로 이야기 할 때는 커널을 포함해서 주변 시스템을 다루는 유틸리티를 포함한 것을 의미한다. 운영체제의 목적 운영체제의 목적은 크게 두가지로 나누어 볼 수 있다. 하드웨어를 효울적으로 관리, 컴퓨터를 편리하게 사용 운영체제의 위치가 하드웨어의 바로 윗부분, 소프트웨어와 사용자의 아랫부분에 설치되기 때문에 하드웨어를 효율적으로 관리하는 것이 가장 중요한 역할..

운영체제 2022.03.19

Page Replacement

할당해줄 Free Frame이 부족해진 경우 기존에 할당되어 있는 것을 회수하는 것을 말한다. 할당 받을 frame이 없는 경우 page fault가 일어나며 이때는 기존에 있던 것을 빼앗아 할당해주어야 한다(page replacement). 이때 할당되는 frame을 victim이라고 부른다. victim이 정해지면 사용하던 내용이 다시 쓰일 수 있으므로 디스크에 저장해 둔다. frame이 부족하다고 frame의 개수를 늘리기만 하는 것이 좋은 것이 아니라 어느 정도까지 할당하면 그 이후부터는 별 의미가 없다고 한다. FIFO 들어온 순서대로 프레임을 회수해주는 FIFO(First in First out) 알고리즘이다. 이 알고리즘봐 비교해서 frame을 바꿔주는 교체 알고리즘에 대해서 배워보자. pa..

운영체제 2021.12.06

하드디스크 스케줄링

하드디스크의 중간에는 LP판처럼 생긴 것이 있고, 판 중간의 암이 움직이면서 헤드가 데이터를 읽는다. 판을 track이라고 하고, 각 공간을 sector라고 한다. 하드디스크의 치명적인 약점은 읽고자 하는 섹터를 읽기위해서 헤드가 먼저 그 트랙까지 움직이고 트랙을 찾은 다음 섹터를 찾기 위해서 판이 돌아야 되는 이 seek time이 길다는 것이다. flat을 돌리는 시간을 rotational latency라고 하고, 이 두개의 시간을 더한 것을 positioning time이라고 한다. 패드를 원하는 위치에 위치하기까지 걸리는 시간 = seek time + retational time 물리적으로 움직여 데이터를 찾기 때문에 ms단위의 시간이 걸린다. 나노시간 단위로 동작하는 CPU와는 굉장히 큰 시간차..

운영체제 2021.12.06

운영체제별 메모리 할당법

1. Linux에서의 메모리 할당 리눅스에서는 커널 자료구조를 위해 Slab Allocator방식을 사용한다. 프로세스를 위해서 Free Frame중 아무거나 할당해주고, 회수 알고리즘은 clock algorithm을 사용한다. 회수 대상인 것과 아닌 것을 나누어 관리한다. 2. Window 프로세스에게 할당되면 최소 50개 최대 345개가할당되며 여유가 있으면 늘려준다. 여유가 된다면 345개보다 더 할당할 수 있다는 의미이다. 3. Solaris 운영체제에서 적정한 개수의 free frame을 항상 가지고 있다. 그 개수가 lotsfree라는 변수에 담겨있고, 이는 전체 프레임 수의 $$ \frac{1}{64} $$이다. 변형된 clock알고리즘을 사용한다. 회수할 때가 되면 필요할 때 두번째 han..

운영체제 2021.12.06

Allocating Kernel Memory(커널 메모리 할당)

이전에는 메모리가 프로세스에 할당되는 것에 대해 이야기하였다. 그 외에도 Disk Cache와 커널, 동적자료구조에 할당되기도 한다. 커널 메모리에 할당될 때는 일반 유저 메모리에 할당될 때와 방법이 다르다. 동적 자료구조는 일반 페이징 시스템을 사용하지 않는다. DMA 방식은 디스크에서 메모리 쪽에 쓰게 되면 물리적으로 연속된 공간을 할당해주어야 하는데, 그 두가지 용도로 할당하는 것을 budget System이라고 한다. 256의 공간이 있고, 커널에서 20의 공간을 요청하면, 20을 떼어주는 것이 아니라, 20보다 작아지지 않을 때까지 반으로 쪼개어 할당한다. 이러한 방법을 buddy System이라고 한다. 항상 반으로 쪼개기 때문에 언제나 옆에 같은 사이즈가 존재한다. 사용이 끝나면 원래 크기로..

운영체제 2021.12.06

Thrashing 과 frame 할당

Thrashing이란 프로세스의 수가 많아질수록 처리량은 올라가지만, 너무 많아지면 어느 순간 처리량이 급격하게 떨어지는 형상을 말한다. 프로세스의 수가 많아지면 각 프로세스에 할당되는 프레임 수가 줄어들어 page fault가 빈번하게 발생하게 된다. fault를 처리하느라 많은 시간이 소요되어 시스템 전체의 성능이 저하되게 되는 것이다. Thrashing을 해결하기 위해서 적절한 수의 frame를 프로세스에 할당해주는데, 이를 위해서 locality model을 사용한다. 프로그램에서 루프를 사용하면 동일한 코드와 Table에 접근하게 되고 루프를 빠져나오면 사용하지 않는다. 프로그램이 sequential과 loop를 반복하여 진행하는 특성 때문에 발생하는 이 특징을 이용한다. frame의 갯수를 어..

운영체제 2021.12.06

파일시스템 수정

Cache-Update Policy 3가지 write-through policy : 캐싱 된 내용이 고쳐질 때마다 원본의 내용도 고치는 것. 원본과 작업 물 간의 불일치문제는 해결되지만 오버헤드가 크다. write on close : 모든 작업을 작업본에서 수행하고, 작업이 끝났을 때 원본과 싱크를 맞춰주는 방법이다. 오버헤드가 작지만 작업도중 crash가 발생할 경우 작업의 내용이 모두 날아간다. delayed write : 일정시간마다 원본과 싱크를 시켜주는 방법이다. 오버헤드를 감수하더라도 자료의 일치성이 중요하다면 write through방법을 사용하고, 일반적으로는 delayed write방법을 사용한다. Recovery 기능 데이터의 일부가 고쳐진 상태에서 System Crash가 발생하면 d..

운영체제 2021.12.05

쓰레드와 병행처리(Tread and Concurrency)

쓰레드는 프로세스 내에 존재하는 여러개의 독립된 실행 단위이다. 독리되었다는 것은 자기 자원도 일부가지고 있지만 CPU 스케쥴링계산의 대상이 되느냐를 의마한다. 쓰레드도 하나의 스케쥴링 계산 대상이 된다. 프로세스가 하나 만들어지면 그 프로세스에 메모리, 파일, 레지스터 셋, 스택등이 할당되고 흐름이 하나만 할당된다면 single thread program, 여러개가 할당된다면 multi-threading 이라고 부른다. 중간에 쓰레드를 여러개 만들어 여러 프로그램이 동시에 실행된다. 위 그림의 오른쪽에서 code, data, file 등은 모든 쓰레드가 공동으로 가지는 자원이고, register, stack, PC등은 쓰레드별로 가지고 있는 자원임을 볼 수 있다. 쓰레드는 1.일반프로세스에 비해서 자원..

운영체제 2021.09.26

시스템 콜과 예외처리

시스템 콜 시스템 콜이란 OS에 있는 함수를 호출하는 것을 말한다. 위의 그림은 시스템 콜이 일어나는 과정을 보여주고 있다. 시스템 콜이란 OS에 있는 함수를 호출하는 것으로 시스템 콜의 처리를 할 때, 시스템 콜은 일종의 인터럽트로 처리되어 linux에서는 인터럽트 번호가 128인 인터럽트를 걸게 된다. 단 인터럽트를 걸기 전에 시스템 콜 함수의 파라미터를 넘겨주어야 하는데, 사용자 영역과 커널 영역은 완전히 다른 메모리 영역이기 때문에 사용자 영역에서는 kernel 영역에 접근할 수 없다. 그렇기 때문에 파라미터 값들을 레지스터에 넣어주고 eax라는 레지스터에 시스템 콜 번호를 넣어준다. 그래야만 커널에서 인터럽트가 걸렸을 때 어떤 시스템 콜을 호출했는지 알 수 있다. libc에 있는 함수를 wrap..

운영체제 2021.09.26

Context Switching과 Process Tree

Context Switching 해석 그대로 따지면 문맥이 바뀌었다는 의미 같다. A 라는 프로세스에서 OS 로 상태가 넘어가는 것을 context switching 이라고 한다. A가 스케줄링 되었을 때 A의 PCB 중 한 부분에 A에 할당된 시간을 적어 놓는다. A의 PC 값, register 값 또한 PCB 에 저장해야 하는데 그것을 State Save 라고 한다. A의 실행이 멈추면 다른 것을 수행해야 하므로 A의 상태를 저장한다. 운영체제는 스케줄러에 의해서 남아 있는 B, C라는 프로그램중에서 무엇을 실행 할 지 선택하게 된다. 만약 스케줄러가 B를 선택했다고 하면 dispatcher 가 B를 실행하게끔 B의 PCB 에 그 이전에 저장해 두었던 상태들을 다시 레지스터로 옮겨두어야 하는데 이것을..

운영체제 2021.09.23