CS/OS(13)
-
[OS] Operating System - 페이징과 스와핑
Paging Paging, 페이징은 운영체제에서 메모리를 관리하는 기법이다. 운영체제는 메모리를 관리하기 위해 메모리를 같은 크기의 블록으로 나눠서 관리를 하는데 이때 나눠진 블록이 바로 페이지이다. 페이지를 사용하면 연속 메모리 할당의 두 가지 문제점을 해결할 수 있다. 외부 단편화 문제와 연관된 요소들의 압축 문제를 해결할 수 있다. 또한 운영체제와 하드웨어 간의 협력을 통해 성능을 향상할 수 있다. 페이징에 대한 기본적인 방법은 다음과 같다. 물리 메모리의 분할 : 물리 메모리를 고정 크기의 블록으로 나눈다. 이때의 블록은 프레임(frame)이라고 한다 논리 메모리의 분할 : 프로세스의 논리 메모리고 같은 크기의 블록으로 나눈다. 해당 블록을 페이지(page)라고 한다 이를 통해 논리적 주소 공간은..
2024.02.20 -
[OS] Operating System - Dynamic Loading & Memory Allocation
Dynamic Loading 프로그램이 실행될 때 프로그램과 관련이 된 데이터가 모두 물리적 메모리에 존재해야 하는가?라는 질문에 대한 답이 될 수 있는 것이 다이내믹 로딩이다. 다이내믹 로딩은 프로그램이 실행을 하고 해당 프로세스에서 관련 기능을 호출하여 데이터를 로드할 때 그때서야 데이터를 로딩하는 것이다. 그렇기에 불필요한 데이터를 먼저 로딩하지 않기에 메모리의 공간을 좀 더 효율적으로 사용할 수 있다. 프로그램 시작 프로그램이 시작이 되면 디스크에서 메모리로 프로그램이 로드가 된다. 이때 다이나믹 로딩을 사용하기에 필수적이지 않는 데이터들은 로드가 되지 않는 상태로 메모리에 존재하게 된다. 함수 호출 사용자 또는 프로그램에 의해 특정 기능이 필요할 때, 해당 기능을 포함하는 모듈이나 라이브러리의 ..
2024.02.12 -
[OS] Operating System - Main Memory
[OS] Operating System - Main Memory 이전까지 다룬 기존의 프로세스의 정의는 프로그램이 실행이 되는 것을 의미하며 이는 메인 메모리에 저장이 된 일련의 명령어 집합이다. 이때 메모리는 각각의 고유한 주소를 가진 방대한 바이트 배열로 구성이 된다. CPU는 PC - 프로그램 카운터를 사용하여 메모리에서 명령어를 가져오며, 명령어는 메모리에서 데이터를 로드하거나 저장할 수 있다. 프로그램은 이러한 과정을 통해 실행이 되며 운영체제와 하드웨어의 상호작용을 나타내게 된다. 메모리의 구조는 다음과 같다. 각각의 프로세스들은 메모리의 공간을 나눠서 존재하게 된다. 이때 base / limit 두 개의 레지스터를 사용하는 데 base 레지스터의 경우 프로세스의 메모리 공간의 시작 주소를, ..
2024.02.11 -
[OS] Operating System - Synchronization Tools - Monitor
[OS] Operating System - Synchronization Tools - Monitor 저번에는 뮤텍스 락과 세마포어에 대해 알아보았다면 이번에는 monitor에 대해 정리를 해보려고 한다. 모니터 스레드가 상호배제를 가짐과 동시에 특정 조건이 충족될 때까지 대기(block)할 수 있게 하는 동기화 구조 Monitor 위에서 간단히 정리한 개념에서 더 알아보았다. 단순히 해당 내용만 보면 세마포어와는 무슨 차이점이 있는지 모를 수 있다. 세마포어의 경우 편리하고 효과적으로 동기화를 해결한다. 다만 timing error가 발생할 수 있다. 이때 timing error는 특정한 실행 순서가 발생할 경우 타이밍 에러가 발생할 수 있으나, 해당 실행은 항상 일어나는 것이 아니기에, 해당 에러를 감..
2024.02.01 -
[OS] Operating System - Synchronization Tools - mutex lock / semaphore
Synchronization Tools 이전 ppt에서 경계구역(critical section)에서 발생하는 문제들을 정리했었다. 이번 내용은 Mutex Locks, Semaphore, Monitor, Liveness 등의 해결 방법에 대해 좀 더 알아보는 시간이었다. 먼저 이번에 등장하는 내용의 단순한 개념은 다음과 같다. ppt의 구성은 4개의 방법을 다루지만 강의가 나눠져 있었으니 먼저 mutex lock과 semaphore에 대해 정리했다. Mutex Locks : 동기화를 위한 가장 단순한 도구 Semaphore : mutex lock보다 좀 더 강력하고, 편하고, 효과적인 도구 Mutex Locks 뮤텍스 락(Mutex Lock)은 동시성 관리를 위해 사용이 된다. Mutual Exclusio..
2024.01.31 -
[OS] Operating System - Synchronization Tools(1)
배경지식 프로세스끼리의 협력 프로세스가 동작하며 실행이 되는 결과들은 서로에게 직접적으로 영향을 줄 수 있다. 프로세스들은 논리적 주소 공간을 공유하거나, 데이터를 공유할 수 있다. 해당 자원을 공유하면서 프로세스 간의 효율성이 증가하고, 관리의 복잡성도 증가한다. 공유 자원 : 공유 메모리, 파일 시스템, DB, etc.. 공유된 데이터와 처리된 데이터 간의 데이터 불일치 여러 프로세스가 동시에 공유 데이터에 접근할 때, 데이터 불일치 문제 발생 가능성 존재 Ex 두 프로세스가 동시에 같은 데이터를 수정할 때 하나의 프로세스에 의해 변경된 데이터가 다른 프로세스로 인해 데이터가 변할 수 있다. 데이터 일관성 유지의 중요성 공유 자원을 사용하는 프로세스간의 협력은 질서 있는 실행을 통해서 프로세스 간의 ..
2024.01.21