전체 글 199

Deadlock: 교착 상태 (2/2)

Deadlock Detection * resource type 당 자원이 하나인 경우 = single instance - 자원 할당 그래프에서 cycle이 곧 deadlock임 * resource type 당 자원이 여러개인 경우 = multiple instance - banker's algorithm과 유사한 방법 활용 wait for graph algorithm - resource type당 single instance인 경우 - 자원 할당 그래프의 변형 - 프로세스만으로 node를 구성한다. - Pj가 가지고 있는 자원을 Pk가 기다리는 경우 Pk -> Pj * Algorithm: wait for graph에 사이클이 존재하는지를 주기적으로 검사한다. 시간 복잡도는 n^2임. resource typ..

CS/operating system 2021.02.26

Deadlock: 교착 상태 (1/2)

* Deadlock - 일련의 프로세스들이 서로가 가진 자원을 기다리며 block된 상태 * Resource (자원) - 하드웨어, 소프트웨어 등을 포함하는 개념 - 예) I/O serivice, CPU cycle, memory space, semaphore 등 - 프로세스가 자원을 사용하는 절차 (Request, Allocate, Usem Release) Deadlock Example 1 - 시스템에 2개의 tape drive가 있다. (하나 복사 - 다른 하나 paste) - 프로세스 p1과 p2 각각 하나의 tape drive를 보유한 채 다른 하나를 기다림 Deadlock Example 2 - Binary semaphores A and B Process0 P(A) P(B) Process1 P(B)..

CS/operating system 2021.02.25

Disk Management: 디스크 관리 (2/2)

3. 다중 디스크 환경에서의 스케줄링 여러 사용자를 동시에 서비스하는 서버에서는 다중 디스크를 사용한다. 왜냐하면 여러 디스크로 동시에 서비스할 수 있고 일부 디스크에 오류가 발생해도 지속적인 서비스가 가능하기 때문이다. 이러한 다중 디스크 환경에서는 디스크 내에서의 입출력 요청의 처리 순서만 결정하는 것이 아니라 어떤 디스크의 작업을 수행할 것인지를 고르는 문제까지 해결해야 한다. 최근에는 전력 소모를 줄이는 것이 디스크 관리의 또 다른 중요한 목표로 인식되고 있다. 4. 디스크의 저전력 관리 1) 비활성화 기법 디스크의 상태는 전력 소모를 기준으로 크게 4가지 상태인 활동(active), 공회전(idle), 준비(standby), 휴면(sleep)으로 나눌 수 있다. 이 때 현재 상태에서 다른 상태로..

CS/operating system 2021.02.24

Disk Management: 디스크 관리 (1/2)

Disk Management * Physical Formatting (Low-Level Formatting) - 디스크를 컨트롤러가 읽고 쑬 수 있도록 섹터들로 나누는 과정 - 각 섹터는 header + 실제 data(보통 512 byte) + trailer로 구성된다. - header과 trailer는 section number, ECC(Error - Connectiong Code)등의 정보가 저장되며 controller가 직접 접근 및 운영 * Partitioning - 디스크를 하나 이상의 실린더 그룹으로 나누는 과정 - OS는 이것을 독립적 disk로 취급 * Logical Formatting - 파일 시스템을 만드는 것 - FAT, inode, free space 등의 구조를 포함한다. * Bo..

CS/operating system 2021.02.23

Virtual Memory: 가상 메모리 (2/2)

3. 페이지 프레임의 할당 (page frame의 allocation) Allocation problem: 각 process에게 얼마만큼의 page frame을 할당할 것인지에 대한 문제 allocation의 필요성 - 메모리 참조 명령어 수행 시 명령어, 데이터 등 여러 페이지를 동시에 참조한다. 명령어 수행을 위해 최소한 할당되어야 하는 frame의 수가 있음 - loop를 구성하는 page들은 한꺼번에 allocate되는 것이 필요함. 왜냐하면 최소한의 allocation이 없으면 매 loop마다 page fault나기 때문이다. allocation scheme - equal allocation(균등 할당) 모든 프로세스에게 똑같은 갯수 할당해주기 - proportional allocation(비례..

CS/operating system 2021.02.22

Virtual Memory: 가상 메모리 (1/2)

프로그램이 실행되기 위해 그 프로세스의 주소 공간 전체가 메모리에 올라와 있어야 하는 것은 아니다. 운영체제는 cpu에서 당장 수행해야 하는 부분만을 메모리에 올려두고 나머지는 디스크의 스왑 영역(swap area)에 올려둔다. 프로그램은 0번지부터 시작하는 자기 자신만의 메모리 주소 공간을 가정할 수 있는데, 이러한 공간을 가상 메모리(virtual memeory)라고 부른다. 가상 메모리는 모든 프로세스가 가지고 있으며 이들 공간 중 일부는 물리적 메모리에 올라가고 일부는 디스크의 스왑 영역에서 준비하고 있는다. 프로세스 주소 공간을 메모리로 적재하는 단위에 따라 가상 메모리 기법은 요구 페이징(demand paging)과 요구 세그먼테이션(demand segmentation)으로 나뉜다. 대부분 요..

CS/operating system 2021.02.19

Memory Management: 메모리 관리 (3/3)

5. Segmentation (세그먼테이션) segment란? / segmentation이란? 프로그램의 의미(기능) 단위 / 프로그램을 세그먼트로 나누어 물리적 메모리에 올리는 기법 하나의 프로세스를 구성하는 주소 공간은 일반적으로 코드, 데이터, 스택 등의 의미있는 단위들로 구성된다. 세그먼트는 이와 같이 주소 공간을 기능 단위 또는 의미 단위로 나눈 것을 뜻한다. 프로세스의 주소 공간 전체를 하나의 세그먼트로 볼 수도 있으며, 일반적으로는 코드, 데이터, 스택 등의 기능 단위로 세그먼트를 정의한다. 작게는 프로그램을 구성하는 함수 하나하나를 세그먼트로 정의할 수도 있다. 세그먼트는 의미 단위로 잘랐기 때문에 크기가 균열하지 않다. 크기가 균열하지 않은 세그먼트들을 메모리에 적재하는 부가적인 오버헤드..

CS/operating system 2021.02.18

Memory Management: 메모리 관리 (2/3)

3. 물리적 메모리의 할당 방식 Allocation of Physical Memory 메모리는 일반적으로 두 영역으로 나뉘어 사용한다. * OS 상주 영역 interrupt vector 와 함께 낮은 주소 영역 사용 * 사용자 프로세스 영역 높은 주소 영역 사용 사용자 프로세스 영역의 관리 방법은 프로세스를 메모리에 올리는 방식에 따라 연속 할당 (contiguous allocation) 방식과 불연속할당 (noncountiguous allocation) 방식으로 나뉜다. - 연속 할당(contiguous allocation) 연속 할당 방식은 프로세스를 메모리에 올릴 때 그 주소 공간을 여러 개로 분할하지 않고 물리적 메모리의 한 곳에 연속적으로 적재하는 방식이다. 이 방식은 물리적 메모리를 고정된 크..

CS/operating system 2021.02.17

Memory Management: 메모리 관리 (1/3)

컴퓨터에서는 byte단위로 메모리 주소를 부여하기 때문에 32비트 주소 체계를 사용하면 2^32바이트 만큼의 메모리 공간에 서로 다른 주소를 할당할 수 있다. 컴퓨터 상의 주소는 32비트를 그대로 사용하지 않고 효율적인 운영을 위해 일련의 영역을 행정구역처럼 묶어서 사용한다. 보통 4kb(=2^12byte) 단위로 묶어서 페이지(page)를 만든다. 하나의 페이지 크기가 2^12이므로 페이지 내에서 바이트별 위치 구분을 위해서는 12비트가 필요하다. 따라서 총 32비트 주소 중 하위 12비트는 페이지 내에서의 주소를 나타내게 된다. * Logical Address( = virtual address) - 프로세스마다 독립적으로 가지는 주소 공간 - 각 프로세스마다 0번지부터 시작 - CPU가 보는 주소는 ..

CS/operating system 2021.02.16

CPU Scheduling: CPU 스케줄링 (2/2)

1) FCFS (First Come First Served) 프로세스가 준비 큐에 도착한 시간 순서대로 cpu를 할당하는 방식. 비선점형이라 cpu를 차지한 프로세스가 내놓기 전까지는 cpu를 선점당하지 않는다. 효율적이지 않은 알고리즘임 cpu 버스트가 긴 프로세스 하나가 cpu 버스트가 짧은 여러개보다 먼저 도착했다고 한다면 cpu 버스트가 짧은 프로세스들이 cpu 버스트가 긴 프로세스 하나 때문에 오래 기다려야 해서 평균 대기 시간(average waiting time)이 길어진다. FCFS 스케줄링에서는 먼저 도착한 프로세스의 성격에 따라 평균 대기시간이 크게 달라진다. 즉 CPU 버스트가 긴 프로세스가 먼저 도착한 경우 평균 대기 시간이 길어지는 반면, CPU 버스트가 짧은 프로세스가 먼저 도착..

CS/operating system 2021.02.13