Computer Science/Operating System
-
[OS] Memory ManagementComputer Science/Operating System 2021. 8. 10. 08:38
프로그램을 실행하기 위해서는 프로세스를 메모리에 올려야 한다. 운영체제는 한정된 메모리 공간을 활용하기 위한 메모리 관리 전략을 지니고 있다 Logical Address(Virtual Address) : 프로세스마다 독립적으로 가지는 주소공간. CPU가 보는 주소. 각 프로세스마다 0번지 부터 시작 Physical Address: 메모리에 실제로 올라가는 위치 Address Binding : Symbolic Address ➡ Logical Address ➡ Physical Address로 변환하는 과정 사용자 프로그램을 물리적 메모리에 직접 접근할 수 없기 때문에(권한을 가져서는 안 된다) 상징 - 논리 - 물리 주소로 바인딩하는 과정이 필요하다 주소 바인딩은 다음의 세 시점에 발생할 수 있다. 1️⃣ ..
-
[OS] 공유 자원의 접근을 제한하는 Process SynchronizationComputer Science/Operating System 2021. 8. 6. 08:59
많은 프로세스들은 자원 혹은 메모리를 공유한다. ex) 공유 메모리를 사용하는 프로세스들, 커널 내부 데이터를 접근하는 루틴들 Storage-Box: Memory Address Space / Execution-Box: CPU Process 프로세스의 수행은 공유 자원에 변화를 끼치게 되고, 여러 프로세스가 동시에 공유 자원에 접근하면 데이터의 일관성을 보장받을 수 없다. 그래서 프로세스는 특정 공유 자원을 선점할 때 다른 프로세스가 접근할 수 없게끔 제한한다. 하지만 특정 자원에 접근하려는 프로세스가 여러 개 일 경우 Race Condition이 발생할 수 있다 공유 데이터의 동시 접근은 데이터의 불일치 문제(inconsistency)를 발생시킬 수 있다 !! 따라서 consistency 유지를 위해서는..
-
[OS] CPU Scheduling - 어떤 Job이 CPU를 선점할까Computer Science/Operating System 2021. 8. 2. 01:34
우리는 컴퓨터를 사용할 때 한 가지 작업만 하지 않는다. 크롬도 키고 vscode도 키고 카톡도 하고 유튜브도 봐야된다. CPU 스케줄링은 여러 종류의 Job들이 섞여있는 운영체제 환경에서 이러한 다중 프로그래밍을 가능하게 하는 동작 기법이다. 운영체제의 CPU 스케줄링은 다음의 두 가지 사항을 고려해야 한다. Interactive Job에게 적절한 시기에 Response를 제공하는 것 CPU와 I/O device 등 시스템 자원을 골고루 & 효율적으로 제공(I/O-bound job / CPU-bound job) CPU 스케줄러는 Ready 상태의 프로세스 중 CPU를 할당할 프로세스를 선택하는 역할, Dispatcher는 CPU의 제어권을 CPU Scheduler에 의해 선택된 프로세스에게 넘기는 역할..
-
[OS] Process Management와 System CallComputer Science/Operating System 2021. 6. 13. 02:57
모든 프로세스는 부모-자식 관계를 지닌다. 프로세스의 생성에는 처음부터 새로 생성하는 방식과, 부모 프로세스를 복제해서 생성하는 방식이 있다. 프로세스를 처음 생성할 때 에는 프로그램 코드와 데이터를 메모리에 적재하고, 새로운 PCB를 생성하여 초기화하고, 프로세스를 Ready Queue에 enqueue한다. 프로세스를 복제할 때 에는 기존 프로세스를 부모(Parent) 프로세스, 새로운 프로세스를 자식(Child) 프로세스의 관계를 가진다. 복제와 동시에 현재 실행중이던 프로세스를 중단하고 상태를 저장 부모 프로세스의 PCB를 복사해서 새로운 PCB를 생성한 뒤 Ready Queue에 추가 Linux) fork() 함수 사용 부모 프로세스는 여러 자식 프로세스를 가질 수 있기 때문에 그림과 같은 트리 ..
-
[OS] Process and Thread - 프로세스와 쓰레드 개념과 차이점Computer Science/Operating System 2021. 2. 7. 02:28
Process 운영체제에서 말하는 프로세스란, Program in Execution 즉 실행중인 프로그램의 단위를 의미한다. 단일 작업을 지원하던 이전 OS들과는 달리, 현재의 운영체제는 다중 동시 작업을 지원한다. 그말은 즉슨 여러 프로세스가 메모리에 동시 적재되고, 한꺼번에 돌아가야 한다는 것을 뜻한다. 시분할(time sharing)으로 인한 Multi Process 체제에서 각각의 프로세스는 현재 상태를 백업해야 할 필요성을 갖는다. 따라서 각각의 프로세스는 특정 시점에서 프로세스의 상태를 나타내는 요소들의 집합을 뜻하는 Process Context를 갖게 되었다. Process Context에는 다음과 같은 요소들이 있다. - CPU 수행 상태를 나타내는 Hardware Context(Progr..
-
[OS] 운영체제(Operating System)의 개요 및 역할Computer Science/Operating System 2021. 1. 25. 22:48
현존하는 모든 컴퓨터, MPU에는 운영체제가 존재한다. 보편적으로 우리는 Mac OS, Window, Linux 등의 다양한 상용 운영체제를 알고 있고, 가지고 있다. 컴퓨터 과학에서 운영체제에 대해서 정의하면, 운영 체제(Operating System): 컴퓨터의 하드웨어를 관리하고 응용 소프트웨어를 실행하기 위해 존재하는 시스템 소프트웨어. 좁은 의미에서는 보안, 추상화, 자원 관리의 역할을 맡고 있는 시스템 소프트웨어인 커널만을 가리키는 단어이지만, 넓은 의미에서는 커널을 포함한 주변 시스템 유틸리티를 전부 포함한다. 위와 같이 컴퓨터 하드웨어와 응용 SW 사이에 위치해서 자원의 형평성 있는 분배를 통한 효율적 관리, 사용자에게 시스템을 편리하게 이용 가능한 환경을 제공하는 역할을 한다. 이러한 운..
-
[OS] Interrupt 인터럽트란 ?Computer Science/Operating System 2021. 1. 22. 00:50
인터럽트는 펌웨어 개발의 필수 기능이자 OS 개념이다 Interrupt: 마이크로프로세서(CPU)가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치나 또는 예외상황이 발생하여 처리가 필요할 경우에 마이크로프로세서에게 알려 처리할 수 있도록 하는 것 - 출처: 위키백과 인터럽트는 위와 같은 정의를 가지고 있는데, 주로 "프로그램을 실행하던 중에 예기치 못한 상황이 발생했을 때, 현재 처리하던 작업을 중단하고 해당 상황을 먼저 처리한 뒤에 기존의 작업을 진행하는 것" 이라고 하기도 한다. 이러한 설명은 인터럽트의 발생을 굉장히 예외적이고, 급작스러운 것으로 묘사하는 것 같지만 실제로는 인터럽트는 매우 빈번하고 흔하게 일어난다. OS는 CPU라는 한정된 자원을 가지고 있고, 이것을 적절하게 프로세스들..