운영체제 12

CPU 스케줄링 알고리즘

👣 개요 CPU 소유권을 어떤 프로그램에 대해 넘길지에 관한 알고리즘이다. 👣 비선점형 방식 프로세스가 스스로 CPU 소유권을 포기하는 방식. 강제로 프로세스를 중지하지 않기 때문에 Context Switching으로 인한 부하가 적다. 👣 FCFS - First Come, First Served 가장 먼저 들어온 프로세스를 먼저 처리하는 알고리즘. 단점으로 Convoy Effect이 있는데 이것은 오래 걸리는 프로세스를 처리하기 위해 간단한 프로세스를 오래 기다리게 해야 하는 현상이 발생한다. 👣 SJF - Shortest Job First 실행 시간이 가장 짧은 프로세스를 먼저 실행하는 알고리즘. 단점으로 Starvation 현상이 있는데 이것은 실행 시간이 긴 프로세스는 전혀 실행되지 않는 현상을 ..

운영체제 2023.07.23

프로세스 자원 동기화 전략

👣 공유 자원 프로세스, 스레드가 함께 접근 가능한 자원. 2개 이상의 프로세스가 동시에 읽거나 쓰는 상황을 경쟁 상태(race condition)라고 한다. 👣 임계 자원 프로세스, 스레드의 접근 순서로 결과가 달라질 수 있는 코드 영역. 이를 해결하기 위한 방법은 뮤테그, 세마포어, 모니터 3가지가 있다. 위 방법들은 모두 Lock이라는 메커니즘을 이용하고 있다. 👣 뮤텍스 특정 공유 자원을 1 개의 프로세스가 점유하고 있다면 Lock을 설정해 점유하고 있는 와중엔 다른 프로세스가 접근하지 못하도록 한다. 👣 세마포어 뮤텍스가 1개의 프로세스 점유만 허용했다면 세마포어는 n개의 프로세스 점유를 허용한다. (단, n >= 1) 구성 요소는 '정수 값', 'wait 함수', 'signal 함수'로 이뤄져..

운영체제 2023.07.23

IPC - Inter Process Communication

프로세스끼리 데이터를 주고 받는 메커니즘. 해당 방법들은 모두 스레드 사이의 공유방법보다 속도가 느리다. 1. 공유 메모리 특정 메모리 블록에 대한 접근 권한이 부여되어 통신이 가능한 것. 불필요한 데이터 복사가 생기지 않아 가장 빠르지만 동시에 수정이 이뤄질 수도 있어서 동기화가 필요하다. 2. 파일 디스크에 저장된 데이터를 기반으로 공유. 3. 익명 파이프 FIFO 방식으로 읽히는 임시 공간으로 데이터를 구조받으며 단방향 방식으로 작동한다. 부모, 자식 프로세서 사이에서만 사용 가능 4. 명명된 파이프 1 개의 서버와 n 개의 클라이언트의 통신을 위한 파이프 컴퓨터 내 프로세스 뿐만 아니라 다른 네트워크의 프로세스와도 통신 가능. 양방향 통신이 가능하지만 동시에 통신할 수는 없다. 파일 시스템으로 구..

운영체제 2023.07.23

은행원 알고리즘

알고리즘의 내용을 설명하기 앞서서 용어 정리. Max Allocate Available 의미 각 요청자가 얼마나 요구하는지 각 요청자에게 얼마나 할당했는지 제공자가 현재 얼마나 보유 중인지 아래 그림을 보면 각 대출자들은 40원, 50원, 60원을 요구하고 있고(Max) 각 대출자에게 급한대로 25원, 25원, 25원을 대출해준 상태다.(Allocate) 현재 은행은 25원만 추가로 더 줄 수 있다.(Available) 이 때, 은행이 1st, 2nd 사람에게 추가 대출을 하면 대상자는 모든 자원을 가지고 처리 후 다시 원금을 돌려준다. 때문에 이런 상태를 '안전 상태'라고 볼 수 있다. '안전 상태'란? 교착 상태에 빠지지 않는 상태. 즉, 자원을 투입하면 다시 되돌려 받을 수 있는 상태. 그리고 '불..

운영체제 2023.07.23

C언어 컴파일 과정

전처리 소스 코드의 주석 제거 및 헤더 파일 병합 전처리 된 소스 코드 파일(*.i)로 변환 컴파일 오류 처리, 코드 최적화 작업을 하고 어셈블리어(*.s)로 변환 어셈블러 어셈블리어를 목적 코드(Object Code)(*.o)로 변환. 링크 프로그램 내의 라이브러리 함수, 타 목적 코드 등과 결합해 실행 파일(*.exe, *.out) 생성. 정적 라이브러리 (*.a) 빌드 시, 직접 실행 파일에 포함되어 독립적인 실행 파일 생성. 생으로 포함되다 보니 해당 라이브러리를 사용하는 다른 실행 파일과 내용이 중복될 수 있어 파일의 크기가 증가. 실행 속도가 빠르지만 변화에 대처하기 어렵고 파일 크기가 크다. 동적 라이브러리 (*.so, *.dll) 런타임 시, 필요한 라이브러리를 로드해서 사용. 라이브러리의..

운영체제 2023.07.23

프로세스

👣 용어 정리 프로세스 컴퓨터에서 실행되고 있는 프로그램. 스레드 프로세스 내 작업. 👣 컴파일 과정 우선 C언어를 기준으로 컴파일 과정을 설명. C언어 컴파일 과정 전처리 소스 코드의 주석 제거 및 헤더 파일 병합 전처리 된 소스 코드 파일(*.i)로 변환 컴파일 오류 처리, 코드 최적화 작업을 하고 어셈블리어(*.s)로 변환 어셈블러 어셈블리어를 목적 코드(Obje ikadnorth.tistory.com 👣 프로세스 스케줄링 상태 생성 프로세스가 생성된 상태. C 언어에서 fork() 또는 exec() 함수로 생성됨. 이 때, PCB가 할당됨. 더보기 fork() 프로세스를 생성하는 시스템 콜입니다. 현재 실행 중인 프로세스와 동일한 모든 코드와 데이터를 복사하여 자식 프로세스를 생성합니다. 이때 부..

운영체제 2023.07.23

페이지 교체 알고리즘

👣 개요 스와핑 시, 어떤 페이지를 하드디스크에 올려놓을 건지 선택하는 알고리즘. 되도록 스와핑이 많이 일어나지 않게 하기 위해선 잘 사용하지 않을 페이지를 메모리에서 제거하는 것이 좋다. 👣 오프라인 알고리즘 가장 최적의 알고리즘으로서 가상의 알고리즘입니다. 앞으로 사용할 프로세스를 알 수 있다는 가정 하에 실행하는 교체 알고리즘. 다른 알고리즘과의 성능 비교를 위한 상한 기준선. 👣 FIFO 가장 먼저 온 페이지를 교체 👣 LRU 가장 참조가 오래된 페이지를 교체. FIFO와 비슷하지만 참조될 때마다 큐의 맨 앞으로 위치를 옮긴다는 점이 있다 해시 테이블과 이중 연결 리스트로 구현된다. 👣 NUR LRU의 발전된 형태. clock 알고리즘으로도 불림. 👣 LFU 참조 횟수가 가장 적은 페이지 교체.

운영체제 2023.07.22

메모리 할당 방법

👣 개요 연속 할당 고정 분할 방식 가변 분할 방식 불연속 할당 Paging Segmentation Paged Segmentation 👣 연속 할당 프로그램 전체가 연속적인 공간에 매핑. 👣 고정 분할 방식 메모리의 구역을 미리 나눠서 관리하는 방식. 내부 단편화가 발생함. 👣 가변 분할 방식 프로그램 크기에 맞춰 동적으로 메모리를 나눠서 할당. 외부 단편화가 발생함. 이름 설명 최초 적합 선형 탐색하다가 최초로 적합한 곳을 찾으면 바로 삽입. 최적 적합 완전 탐색으로 가장 단편화가 안 생기는 곳에 삽입. 최악 적합 완전 탐색으로 가장 빈 칸이 크게 나는 곳에 삽입. 👣 불연속 할당 프로그램이 조각조각 메모리의 불연속적인 공간에 저장되는 것. 페이징 메모리는 Frame이라는 고정크기로 분할되고, 프로세스..

운영체제 2023.07.22

스와핑 - Swapping

👣 스와핑 가상 메모리에는 존재했지만 실제 RAM에 존재하지 않을 때, 페이지 폴트(Page Falut)가 발생한다. 이 때, 현재 메모리에서 잘 사용하지 않는 부분을 하드디스크로 옮겨서 메모리의 공간을 창출하는 것. 다음은 스와핑의 과정이다. 1. CPU는 물리 메모리[RAM]에 원하는 페이지가 없으면 Trap[Interupt]를 발생시켜 OS에 알림. 2. OS는 CPU의 동작을 일시 정지함. 3. OS는 페이지 테이블을 확인해 가상 메모리에 존재하는지 확인함. 4. 없다면 프로세스를 중단하고 물리 메모리에 빈 프페임이 있는지 확인하기. 5. 없다면 스와핑 발동. 6. 빈 프레임을 확보하고 Page Table을 최신화. 7. CPU를 재가동함. 👣 스레싱 - Thrashing 메모리의 Page Fau..

운영체제 2023.07.22

메모리

👣 계층 👣 가상 메모리 메모리 자원을 추상화하여 사용자에게 매우 큰 메모리로 보이게 만드는 것. 메모리관리장치(MMU)에 의해 가상 주소가 실제 주소로 변환된다. 가상 주소(Logical Address) 논리적 메모리의 주소. 실제 주소(Physical Address) 실제 메모리 위치의 주소. 스와핑이란? 스와핑 - Swapping 👣 스와핑 가상 메모리에는 존재했지만 실제 RAM에 존재하지 않을 때, 페이지 폴트(Page Falut)가 발생한다. 이 때, 현재 메모리에서 잘 사용하지 않는 부분을 하드디스크로 옮겨서 메모리의 공간을 ikadnorth.tistory.com 👣 메모리 할당 방법 메모리 할당 방법 👣 개요 연속 할당 고정 분할 방식 가변 분할 방식 불연속 할당 Paging Segmenta..

운영체제 2023.07.22