OS
[OS] 2. Process
Process Process의 정의 Process는 메모리 상에서 실행중인 작업을 지칭하는 말이다. 즉, 실행중인 Program을 Process라고한다. Program 생성 과정 우리가 작업한 소스코드가 Program이 되는 과정은 다음과 같다. 1. c언어로 코드를 작성한다고 할 때, `.c` 파일은 `gcc 컴파일러`에 의해 `.s` 확장자를 가진 어셈블리 파일로 변환된다. 2. 변환된 어셈블리 파일은 어셈블러에 의해 `.o` 확장자를 가지는 기계어 파일로 변환된다. 3. 변환된 `.o` 파일은 linker에 의해 연결되여 하나의 executable 파일로 변하는데 이를 Program이라고 한다. linker가 여러개의 .o 파일을 연결하는 것은 우리가 서로 다른 소스코드에 모듈을 정의하고 impor..
[OS] 1. 운영체제란? + 기본적인 컴퓨터의 구조
이화여대 반효경 교수님의 운영체제 강의를 바탕으로 작성하였습니다. 운영체제 `운영체제`란, 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층에 해당한다. `커널`은 운영체제의 핵심 부분으로, 컴퓨터가 부팅됨과 동시에 메모리 영역에 로드되어 항상 존재하는 프로그램에 해당한다. 운영 체제의 기능 운영체제는 하드웨어의 자원을 효율적으로 관리하는 기능을 한다. 또한 하드웨어를 다루는 복잡한 부분을 간단하게 추상화하여 제공하기 때문에, 사용자는 하드웨어를 어떻게 사용할지에 대해 전혀 고려하지 않고 편리하게 컴퓨터를 사용할 수 있게 된다. 컴퓨터 시스템의 기본적인 구조 컴퓨터 시스템은 기본적으로 위와 같은 구조로 되어있다. CPU는 register라는 자체 저..
[OS] 9. File System
File file은 비휘발성 저장 장치에 저장된 data의 집합을 말한다. file의 정보는 Metadata와 file data 2 종류로 나눌 수 있다. File Metadata(attribute) 파일의 이름, 유형, 저장 위치, 파일 사이즈, 접근 권한 등 파일을 관리하기 위한 정보들에 해당한다. File Data File의 정보, 즉 실제 file이 수행하는 작업 등에 대한 정보이다. Directory 우리가 흔히 폴더라고 부르는 대상이며, File의 Metadata중 일부를 보관하고 있는 특별한 형식의 파일이다. 해당 디렉토리에 속한 파일 이름과 file metadata를 담고 있다. operation으로 create a file, delete a file, list a directory 등의 ..
[OS] 8. Virtual Memory
Demanding Page Demanding Paging은 필요한 page만 memory에 올리는 메커니즘을 말한다. 구체적인 동작 방식은 아래와 같다. 1. Physical Memory의 instruction을 바탕으로 접근해야하는 대상이 Page Table에 Valid한 Entry로 존재하는지 확인한다. 2. 만약 Valid한 Entry가 존재하지 않는다면, page fault trap이 발생한다.(MMU에 의해 발생) 3. Page fault trap 발생을 page fault handler가 받고, 해당 reference의 타당성을 검사한다. 예를 들어, 해당 접근이 valid 하지만 physical memory에 로드되어 있지만 않은 경우 disk로부터 데이터를 가져온 후, memory에 로드하..
[OS] 7. Address Translation
Memory Abstraction Memory Abstraction, 즉 메모리 추상화는 하드웨어의 복잡성을 숨기고 응용 어플리케이션이나 운영 체제에게 간단하고 일관된 메모리 인터페이스를 제공하는 목적으로 활용되는 테크닉이다. 만약 메모리 추상화가 없다면 각 프로세스들의 주소 공간을 관리하는 과정에 매우 복잡해진다. 예를 들어, 다음과 같이 Physical Memory에 여러 Process가 실행중인 상황을 살펴보자. 각 Process A, B, C는 Physical Memory에서 다른 주소 공간에 위치하고 있다. 따라서 각 Process들이 시작되는 메모리 주소가 다를 것임을 알 수 있다. 하지만 Memory Abstraction을 위해 Virtual Memory를 구현하게 되면, 다음과 같은 구조로..
[OS] 4. Process Scheduling
https://simple-coding-place.tistory.com/21 [OS] Process Process Process의 정의 Process는 메모리 상에서 실행중인 작업을 지칭하는 말이다. 즉, 실행중인 Program을 Process라고한다. Program 생성 과정 우리가 작업한 소스코드가 Program이 되는 과정은 다음과 같다 simple-coding-place.tistory.com https://simple-coding-place.tistory.com/22 [OS] Thread Thread Thread의 정의 Thread란 process 내부에서 실행되는 여러 흐름의 단위를 말한다. Thread의 주소 공간 Thread는 Process와 달리 Stack만을 고유하게 가지며, Code, ..
[OS] 6.Deadlock
Deadlock Deadlock 이란 2개 이상의 Thread가 task를 수행하는 과정에서 특정 공유 Resource에 접근하기 위해 서로 circular하게 대기하고 있는 상황을 의미한다. 여기서 중요한 것은 `Circular`하게 대기한다는 점으로, 단순히 자원을 기다리는 것과는 차이가 있다. 아래는 간단한 예시 시나리오이다. Thread 1: 1. 리소스 A를 요청 2. 리소스 A 획득 대기 Thread 2: 1. 리소스 B를 요청 2. 리소스 B 획득 대기 (Thread 1과 Thread 2는 각자의 리소스를 대기하고 있음) Thread 1: 3. 리소스 B를 기다림 (리소스 B는 Thread 2가 가지고 있음) Thread 2: 3. 리소스 A를 기다림 (리소스 A는 Thread 1이 가지고 ..
[OS] 5. Synchronization(동기화)
Synchronization Synchronization은 여러 작업이나 프로세스가 존재하는 경우 수행 시점을 조절하여 예상하지 못한 결과가 일어나는 현상을 방지하는 것을 말한다. 한 번에 하나의 process, 하나의 thread만이 존재한다면 synchronization은 필요가 없을 것이다. 하지만 우리가 컴퓨터로 작업을 하는데 단 하나의 process, thread만 사용할 수 있다면? 웹 서핑을 하다가 문서 작업을 하고 싶으면 인터넷을 닫아야하는 등의 매우 불편한 상황들이 연출 될 것이다. 따라서 필연적으로 multi-thread를 도입할 수 밖에 없고, 이와 관련하여 발생하는 문제들을 해결하는 테크닉이 `synchronization` 인 것이다. Race Condition 우리가 multi t..