Etc 20

[운영체제]chapter 09. Main Memory_#02 페이징과 스와핑

Main Memory #2 페이징과 스와핑1. 페이징(paging)페이징의 필요성프로세스를 메모리에 올릴떄 가장 좋은 시나리오는 메모리에서 연속적인 위치에 그대로 올라가는 것이다. 하지만 프로세스의 크기가 커지면 커질 수록 연속적인 위치에 놓지 못하게 됨. 이렇게 되면 메모리 위에서 프로세스는 쪼개지는 외부 단편화가 발생 페이징이란 무엇인가?프로세스의 물리적 주소 공간을 비연속적으로 허용하는 메모리 관리 체계이다연속적인 메모리 할당의 2가지 문제를 극복한다외부 단편화(External fragmentation) 회피압축과 관련된 요구를 회피운영체제와 하드웨어 사이에서 협력하여 구현페이징의 기본적인 방법물리적인 메모리를 고정된 크기의 블록(Frames)으로 분할논리적인 메모리를 같은 크기의 블록(pages)..

Etc 2024.06.13

[운영체제]chapter 09. Main Memory_#01 주 메모리의 관리

Main Memory #1 주 메모리의 관리1. 주 메모리 관리의 배경프로세스와 메모리와의 관계프로세스는 실행중인 프로그램이라는 의미로 메인 메모리를 위해서 수행하는 프로그램이라는 의미메모리는 각각의 주소에 바이트 배열로 구성되어 있음CPU는 프로그램 카운터를 사용하여 메모리로 부터 명렁어를 가져온다. 그리고 프로세스 안에 명령어들도 메모리에 불러오거나 저장할 수 있다.메모리 공간각각의 프로세스는 별개의 메모리 공간을 갖는 것을 보장메모리 공간에는 프로세스들의 시작 주소와 종료 주소를 정의하기 위해서 베이스 레지스터(Base register)와 한계 레지스터(Limit Register)를 제공베이스 레지스터(Base Register): 메모리에 프로그램이 할당 될 때, 프로그램의 시작 Register a..

Etc 2024.06.13

[운영체제]chapter 08. Deadlock_#03 교착상태 탐색 후 회복

Deadlocks #3 교착상태 탐색(Detection) 후 회복(Recovery)1. 교착상태 탐색(DeadLock Dection)만약 시스템이 교착상태 방지(Prevent) 또는 회피(Avoid)를 하지 않는다면 교착상태가 발생할 것이다.교착상태 탐색 환경에서의 시스템은 교착 상태 발생을 허용해준다. 대신 교착상태가 발생했는지 안했는지를 판단하기 위한 시스템의 상태를 설명하는 알고리즘을 제공한다. (교착 상태 탐색 알고리즘)시스템은 교착상태가 발생하면 회복하는 알고리즘을 제공한다.각각의 자원 유형의 인스턴스가 단일 인스턴스인 경우자원-할당 그래프의 변형 대기 그래프(wait-for graph)를 유지주기적으로 대기 그래프 안에 원형대기가 있는지 탐색하는 알고리즘을 수행대기 그래프의 특징은 자원-할당 ..

Etc 2024.06.13

[운영체제]chapter 08. Deadlock_#02 교착상태와 뱅커 알고리즘 : 교착상태 회피

Deadlock#2. 교착상태와 뱅커 알고리즘 (Deadlocks & Banker's Algorithm) : 교착상태 회피 (Deadlock Avoidance)교착상태 방지(Prevention) 방법의 한계교착 상태가 발생  만족 조건 4가지인 상호배제, 점유와 대기, 선점불가, 원형 대기중 조건을 하나라도 막는다면 교착상태를 막을 수 있다.그러나 조건을 막는다 하더라도 근본적인  문제  해결이 불가능 하거나 비실용적인 경우가 대부분이였다.제일 실용적인 원형  대기 조건을 방지한다 하더라도 교착상태가 일어나지 않는 것을 보장 할 수는 없다.교착상태 회피(Deadlock Avoidance)교착상태 회피 시스템은 미래의 발생가능한 교착상태를 회피하기 위해서 쓰레드가 대기를 해야하는지 안해야야하는지에 대한 각..

Etc 2024.06.12

[운영체제]chapter 10. Vurtual Memory_#02

Virtual Memory #2 페이지 교체 알고리즘1. 페이지 교체페이지 교체가 필요한 상황은 보조기억장치에 있는 페이지를 메모리에 적재하고자 할 떄, 비어있는 프레임이 없을때 발생 ex) 물리적인 메모리는 40개의 프레임을 가지고 있고 6개의 프로세스들은 각각 10페이지의 크기를 가지고있다. 하지만 각각의 프로세스들은 실제로 수행시에는 5개의 페이지만 사용한다. 이렇게 되면 물리적인 메모리에는 30개의 프레임을 프로세스들이 사용하고 10개의 프리 프레임이 남아있을 수 있다.그러나 모든 프로세스들이 급하게 모두 10개의 페이지를 원하게 되면 20개의 프리 프레임이 필요하게 되고 페이지를 교체해야하는 필요성이 발생한다. 다음 그림은 2개의 프로세스가 각각 4개의 페이지를 가지고 프로세스를 실행시키는 도중..

Etc 2024.06.12

[운영체제]chapter 10. Vurtual Memory_#01

Virtual Memory #1_ 가상 메모리와 디맨드 페이징1. 가상 메모리의 배경가상 메모리 (Virtual Memory)물리적인 메모리 크기보다 더 큰 크기의 프로그램을 실행시키기 위한 기술가상 메모리 기술은 파일 공유와 라이브러리, 프로세스와 생성과 같은 효율적인 메커니즘을 제공다음 그림은 물리적인 메모리 크기보다 큰 가상메모리를 보여줌가상 메모리에 올라간 페이지들을 메모리 맵을 통해서 물리적인 메모리 공간에 메핑시킴실제 물리적인 메모리에 올라간 페이지들을 제외한 나머지 페이지들은 보조 기억장치인 Backing Store에 저장가상 주소 공간(Virtual Address Space)가상 주소 공간은 프로세스가 메모리에 어떻게 저장되는 방법에 대한 논리적 (또는 가상의) 뷰이다.논리적 주소는 0부터..

Etc 2024.06.11

[운영체제]chapter 08. Deadlock_#01 교착상태의 이해

Deadlocks #1 교착상태의 이해: 교착상태 방지 (Deadlock Prevention)1. 시스템 모델 (System Model)교착상태(Deadlock)이란 무엇인가?교착상태란 어떤 다른 프로세스데 의해서 발생된 이벤트에 의해서 모든 프로세스가 대기하는 현상요청한 자원을 다른 대기중인 쓰레드가 점유하고 있기 떄문에 자원을 요청한 대기중인 쓰레드(또는 프로세스)는 다시는 쓰레드 상태를 변경할 수 없다.여러개의 경쟁하는 쓰레드 사이에 분배가 될 유한한 수의 자원으로 구성된 시스템을 고려해 본다 자원의 종류는 몇가지 동일한 인스턴스로 구성된다. 예를 들어 CPU 싸이클, 파일, 입출력 기기 (프린터, 드라이브 등)이 있다.CPU 사이클이 4개의 코어로 구성되었다면 한번의 4개의 쓰레드를 수행할 수 있..

Etc 2024.06.10

[운영체제]chapter 07. Synchronization Examples_#02

동기화 예제 #2 식사하는 철학자들은 왜 굶어 죽었을까?1. 동기화 문제의 대표적인 문제 : 식사하는 철학자들 문제5명의 철학자들은 생각하기thinking, 먹기 eating 두가지 행동만을 반복함5명의 철학자들은 한짝밖에 없는 5개의 젓가락을 공유합니다철학자들이 배가 고파지면 배가 고픈 철학자의 양옆에 있는 두젓가락을 집어들어 밥을 먹습니다.한명의 배가 고픈 철학자가 그의 양옆에 있는 젓가락을 집고 밥을 먹을 떄 그 철학자는 젓가락을 내려 놓지 않고 먹습니다.식사하는 철학자들의 문제점교착 상태가 없고 기아 현상이 없는 여러개의 프로세스들(철학자들) 사이에서 여러개의 자원(젓가락)의 할당이 필요함여기서 각가의 철학자들의 프로세스들은 전부 동일한 성격의 프로세스들이 아닌 네트워크 소켓 프로세스가 될 수 있..

Etc 2024.06.10

[운영체제]chapter 07. Synchronization Examples_#01

동기화 예제 #1 동시성 제어의 고전적 문제들동시성 제어 문제들의 고전적인 예제들유한 버퍼 문제 (Bounded-Buffer Problem)생산자-소비자 (Producer-Consumer Problem)독자-저자 문제 (Readers-Writers Provlem)식사하는 철학자 문제(Dining-Philosophers Problem) 1. 유한 버퍼 문제 bounded-Buffer Problem생산자-소비자 문제로도 불림각각에 하나의 아이템을 저장할 수 있는 n개의 버퍼로 구성생산자의 목적은 소비자를 위해 버퍼를 가득 채우는 것이 목표소비자의 목표는 아이템을 소비하여 버퍼를 비우는 것이 목표공유 데이터 구조Mutex: 이진 세마 포어버퍼 공간에 접근하는 동안 다른 프로세스가 접근하지 못하게 상호 배제를 ..

Etc 2024.06.10

[운영체제] 7. 쓰레드

7. 쓰레드(Thread)1. 프로세스와 생성과 종료프로세스는 프로세스에 의해 만들어진다. 컴퓨터가 부팅이 되면 운영체제가 메모리에 올라오는데 운영체제가 처음으로 수행하는 일 중에 하나는 최초의 프로세스를 생성하는 것이다. 이렇게 처음 만들어진 프로세스가 다른 프로세스를 만들고 그 프로세스가 또 다른 프로세스를 만드는 과정을 반복한다.!https://user-images.githubusercontent.com/34755287/53879677-5f302f00-4052-11e9-89ea-72135b020d12.png위와 같이 최초의 프로세스는 Init이다. 이 이름은 운영체제마다 다르고, init은 UNIX운영체제 기준 이름이다. 여기서 여러 다른 프로세스들이 생성되면 위와 같은 그림처럼 트리 모양으로 나타..

Etc 2024.06.03
반응형