본문 바로가기

CS/운영체제

(12)
[운영체제] 파일시스템 현재 글은 Operating System ConceptsTenth Edition 의 슬라이드 내용을 기반으로 하고 있습니다. 단, 본문의 내용이 반드시 해당 서적의 내용을 보장하지는 않으므로 필요하다면 직접 책을 찾아 읽는 것을 추천합니다. 링크 : https://www.os-book.com/OS10/ 파일 논리적 주소 공간에 연속하여 존재하는 데이터 덩어리로, 운영체제에 의해 물리적 주소에 매핑된다. 타입 데이터 타입 : Numeric, Character, Binary ... 프로그램 : 특정 명령을 수행하는 바이너리 코드 등 파일의 컨텐츠는 파일 생성자에 의해 정의되며, 정말 다양한 목적으로 사용될 수 있기 때문에 text, source, executable 등 다양한 타입을 가질 수 있다는 특징이 ..
[운영체제] 가상 메모리 ( Virtual Memory ) 이 문서의 내용은 Operating System Concepts 10th의 슬라이드에 기반하고 있습니다. https://www.os-book.com/OS10/ 배경 우리가 롤을 한다고 생각해보자. 롤에는 많은 챔피언이 존재하고 모드도 다양하다. 따라서 롤에서 사용되는 모든 코드를 메모리 상에 적재해야 한다면 아마 메모리가 남아나지 않을 것이다. 그런데 사실 생각해보면 롤 프로그램을 시작한다고 내부에서 사용되는 모든 에셋 및 코드를 항상 메모리 상에 올려놓을 필요는 없다. 게임 한 판을 생각해보자. 한 판의 게임에는 기껏해야 10 종류의 챔피언이 사용되며, 일단 게임이 시작되면 해당 정보는 변경되지 않기 때문이다. 단일 모드에서 티모 vs 가렌의 경기가 펼쳐졌다면 사실 메모리 상에는 티모 및 가렌에 대한 ..
[운영체제] 페이징 기법 페이징 기법 연속 적재 기법을 이용하면 내부 단편화 및 외부 단편화가 발생하는 문제점이 존재했다. 그런데 사실 프로세스는 세그멘테이션 기법에서 언급했듯이 특정 기능 단위로 쪼개서 관리하는 것이 가능하다. 특정 프로세스가 실제로 저장되는 물리적 주소는 각각의 물리적 주소를 가리키는 연속적인 논리적 주소가 있다면 사실상 연속적으로 관리되는 것 같다. 페이징 기법은 물리적 메모리를 Frame 이라고 불리는 고정된 크기의 블럭 단위로 쪼갠 후 이를 동일 크기를 지닌 논리적 메모리 영역인 Page에 대응시켜 프로세스를 페이지 단위로 쪼개 관리하는 기법을 의미한다. 각 프로세스는 페이지라는 논리적 메모리 단위로 관리되며, 페이지와 프레임은 페이지 테이블에 의해 매핑되므로 실제 물리적 주소와는 독립적으로 동작할 수 ..
[운영체제] 메모리 일반적으로 컴퓨터를 사용할 때 우리는 디스크에 저장된 이진코드와 메모리 상에서 실행중인 대상 둘 다 프로그램이라는 표현으로 퉁치지만, 컴퓨터 과학에서 프로그램과 프로세스는 명확히 구분된다. 프로세스는 메모리 상에서 실제로 동작하는 대상으로, 프로그램의 코드에 여러 자원을 할당하여 실제로 실행하는 것이다. 과거의 컴퓨터는 한번에 하나의 프로세스만 실행할 수 있었다. 그러나 기술의 발전에 따라 CPU 와 메모리 사이의 동작 속도 사이에 큰 간격이 발생했다. 따라서 CPU가 메모리의 정보를 읽어오는데 많은 지연 시간이 발생하게 되었는데, 이를 stall이라고 한다. 이러한 낭비되는 시간을 줄이기 위해서 메모리에 여러개의 프로세스를 적재하고 경우에 따라 CPU을 돌려 쓰는 멀티 프로그래밍 기법이 고안된다. 초기..
[운영체제] 데드락 자료 출처 : https://www.os-book.com/OS10/slide-dir/index.html 데드락 두개 이상의 프로세스들이 한 순간에 하나의 프로세스만 달성할 수 있는 작업을 동시에 수행하기 위해 상대 프로세스가 가지고 있는 자원을 계속 요구하여, 결과적으로 프로세스 진행이 멈추는 상태이다. 프로세스 P1 및 P2 가 공유 자원에 대한 세마포어 s1 및 s2를 사용하는 상황을 생각해보자. 만약 P1 및 P2 가 동시에 실행되면 P1은 s1, P2는 s2의 사용권을 가진 후 상대방에게 나머지 세마포어에 대한 사용권을 요구하게 된다. 이때 위 코드에서 별다른 수단이 없는 경우 P1 및 P2는 각각 s1 및 s2를 놓지 않고 무기한 자원 할당을 기다리는데, 이게 데드락이다. def transact..
[운영체제] 동기화 문제 및 방법 현재 글은 https://www.os-book.com/OS10/slide-dir/index.html 을 참고하고 있습니다. 어쩌다가 https://www.youtube.com/channel/UCOcPzXDWSrnaKXse9XOPiog 채널을 봤는데, 정말 교수님이 설명을 잘하시는 것 같습니다. 문제의 발단 CPU 스케줄러는 타임 슬라이싱(시간을 짧게 쪼개 돌아가면서 사용)을 통해 빠르게 콘텍스트 스위칭을 일으켜 프로세스들을 실행하며, 이 과정에 다양한 인터럽트 역시 발생할 수 있다. 따라서 각 프로세스 및 스레드들은 실행의 "일부분" 만을 완료한 상태에 있게 된다. 문제는, 이러한 프로세스나 스레드들이 공유 메모리에 접근할 때 발생한다. 예를 들어 다음의 상황을 가정하자. 프로세스 연산 A in_s = ..
[운영체제] CPU 스케줄링 자료 및 개념의 출처 : https://www.os-book.com/OS10/slide-dir/index.html 이 글은 Operating System Concepts 10th edition 을 바탕으로 작성되었습니다. 개요 컴퓨터 전반적인 성능이 증가함에 따라, 특히 CPU 성능의 비약적 발전으로 인해 I/O 작업에 걸리는 시간과의 차이가 크게 벌어졌으며, 이로 인해 과거와 동일한 작업을 수행하더라도 CPU가 대기하는 시간이 증가했다. 사람들은 CPU가 대기하는 시간도 최대한 활용하고자 했다. 따라서 현재 놀고 있는 CPU를 다른 프로세스에 할당하기 위해 메모리 안에 다양한 프로그램을 동시에 적재하는 멀티 프로그래밍 방식이 도입되기도 했다. 이처럼 CPU의 성능을 최대한 활용하기 위해서는 현재 놀고 ..
[운영체제] 스레드 & Concurrency 스레드 프로세스 하위에서 실행되는 실행 단위로, 동일 프로세스에 대한 스레드들은 전역 변수의 형태로 정보를 공유할 수 있다. 각각의 스레드마다 PC, stack 및 레지스터와 같은 실행 환경 정보를 가지고 있으며, 프로그램 코드, 데이터 등 공유할 수 있는 정보의 경우 동일 프로세스 아래에서 공유되어 사용된다는 특징이 있다. 스레드에 대한 배경 현대의 프로그램들은 상당히 복잡하며, 다양한 기능을 동시에 제공한다. 예를 들어, 메모장이나 비디오 플레이어 같이 GUI을 이용하는 현대 프로그램들은 화면에 대한 출력 기능 이외에 데이터 처리, 입력 대기, 연산 등 다양한 기능을 추가적으로 가진다. 위와 같은 경우 각각의 기능을 프로세스 단위로 나누어 하나의 프로그램을 구성하는, 멀티 프로세스 프로그램을 고려할 ..