안녕하세요!

FE 개발자 유진주입니다.

CS/운영체제 9

Chapter 08 가상 메모리

운영체제는 주어진 메모리의 크기 아래서 프로그램을 작은 조각으로 나누어 그 중에 일부분만을 메모리에 적재하되, 적재 가능한 곳으로 비연속적으로(흩어) 넣어줌으로써, 사용자는 메모리에 대한 고민으로부터 벗어날 수 있게 된다. (프로그램의 일부분만이 적재되기 때문에 보다 많은 사용자를 수용할 수 있고, 더 중요한 것은 모든 사용자가 메모리의 크기로부터 자유로울 수 있게 된다.) 가상 메모리(Virtual Memory)를 위해서는 ▶ 우선, 모든 프로그램은 작은 조각(Block)들로 나뉘어지는데, - 페이지(Page): 조각들의 크기를 모두 같도록 했을 때 한 조각 - 세그먼트(Segment): 조각들의 크기를 서로 다르게 했을 때 각각의 조각 * 조각의 크기 = 메모리와 디스크 사이에서 한 번에 전송되는 전..

CS/운영체제 2023.06.01

Chapter 07 메모리 관리

프로그램이 실행되기 위해서는 메모리에 올라와 있어야 한다. 따라서 메모리를 잘 관리하면 프로그램 실행 성능을 높여 CPU의 효율적인 사용과 사용자에게의 빠른 응답성을 가능하게 하므로 효과적인 메모리 관리는 중요하다. : 디스크(보조기억장치)에 있는 많은 프로그램 중 몇 개를 메모리의 어디에 어떻게 적재할 것인가! (데이터의 저장이 목적인 큰 용량의 보조기억장치에 반해, 메모리는 실행될 프로그램을 위한 적재 장소로서 그 크기가 디스크보다는 매우 작다.) - 메모리의 구성 방식 - 주어진 구성과 연관하여 시스템의 성능을 고려한 관리 기법들 메모리의 구성? 메모리의 구성과 메모리의 관리는 밀접한 연관이 있다. 다시 말해, 메모리를 관리하기 위한 기법은 그 대상이 되는 메모리의 구조에 의존적이어서 일단 구성이 ..

CS/운영체제 2023.05.26

Chapter 6. 교착 상태(Deadlock)

교착 상태(Deadlock) : 두 개 이상의 프로세스가 각자 먼저 확보한 자원을 가진 채 상대방의 자원을 필요로 할 경우, 외부로부터의 조치가 없는 한 아무 일도 못하고 계속해서 기다려야 하는 상태 - 교착상태와 관련된 자원의 개념 설명 - 교착 상태 일으킬 수 있는 네 가지 조건 - 다양한 교착 상태의 해결책들 교착 상태가 발생되는 근본 원인? → 시스템이 가지고 있는 한정적인 자원보다 사용하고자 하는 프로세스들의 요청이 더 많은 경우 (자원이 넉넉하면 문제가 없으나, 최소의 비용으로 최대의 효과를 노리는 경제적 논리에 따라, 거의 사용되지 못할 것임에도 필요 이상의 비용을 들여 많은 자원을 구비할 필요 X) 교착상태의 문제점 1. 해당 프로세스들이 더 이상 실행되지 못하여 사용자들에게 응답해 주지 ..

CS/운영체제 2023.05.22

Chapter 5. 병행 프로세스와 동기화(1)

병행(Concurrent): 같이 존재하고 있다는 의미. 메모리에 다수의 프로세스가 같이 존재하는 것. 프로세스들의 실행 순서는 일차적으로 스케줄링에서 담당하겠지만, 실제 실행 과정에서 프로세스 간의 좀 더 복잡한 문제는 세심한 프로세스 관리를 요구함. 다중처리 시스템의 경우 여러 개의 프로세스가 동시에 병렬(Parallel)로 실행됨 (=> 병행 != 병렬) 프로세스의 병행성은 처리기의 수와 상관없으나, 병렬처리가 성공하기 위해서는 기본적으로 병행성이 전제되어야 한다. - 병행 프로세스들은 서로 간에 비동기적(Asyschronous)이다. = 다른 프로세스들이 어떤 상태에 있는지, 어떤 자원을 가지고 있는지, 어디까지 실행됐는지 등에 대해 모른 채 실행 됨 이번 장의 목적 : 공유하는 자원이나 데이터가..

CS/운영체제 2023.04.14

Chapter 4. CPU 스케줄링

스케줄링(Scheduling) : CPU를 기다리고 있는 여러 프로세스 중에 누구를 선택해야 할지에 대해 필요한 방식이나 기준 (주어진 시점에서 어떤 프로세스가 이 자원을 사용할 수 있도록 해 줄 것인가를 결정하는 것) * 대부분 스케줄링이라 함은 CPU 스케줄링을 의미 스케줄링(Scheduling)의 단계 ** 스케줄링이 요구되는 시점을 기준으로 구분 ■ 장기 스케줄링 (=작업 스케줄링) * 대부분 제일 먼저 겪게 되고, 한번 겪으면 그 다음에는 겪을 일 X : 어느 작업을 커널에 등록시켜 프로세스로 만들어 줄 것인가 결정 => 요청된 일을 프로세스로 만들어 시스템에 알려진 일거리로 추가할지 말지 결정. & 다중 프로그래밍의 정도(Multiprogramming Degree)를 조절. - 수행 횟수 적음..

CS/운영체제 2023.04.12

Chapter3. 프로세스와 스레드

프로세스(Process)란? 시스템에 의해 일거리의 단위로 명확하게 구분되는 작업의 대상 (*스레드와 차이 존재) - 수행 중인 프로그램(A program in execution) : 수행 중 (in execution): 어떤 일을 함을 나타내는 프로그램과 이때 필요한 값들을 저장하고 있는 처리기 레지스터, 스택 등의 데이터와 함께, 어느 정도 진행되었는지를 나타내는 PC 값 등으로 표현되어, 커널에 등록되어 있다는 것을 의미함. - 프로그램과 데이터를 기본으로 정상적인 실행을 위해 필요한 환경을 시스템으로부터 부여받은 능동적인 존재. Program Data - 프로세스 제어 블록(Process Control Block, PCB) - 프로세스에 대한 모든 정보를 가진 자료구조 - 프로세스 생성 시에 만들..

CS/운영체제 2023.04.07

Chapter2. 들어가기 전에 (인터럽트, I/O 방식)

OS의 목적? 그 전에, 1장에서 배운 운영체제의 덕목에는... - 사용자가 컴퓨터를 보다 편리하게 사용할 수 있도록 해주어야 한다. - 하드웨어가 가지는 능력을 십분 발휘되도록 제어해야 한다. (컴퓨터 자원들을 효율적으로 사용될 수 있게 해야 한다.) => 즉, 사용자의 편리성과 자원의 효율적 사용이 그 목적. (+) 운영체제 스스로는 효과적인 점검과 개발이 가능하고, 새로운 기능들이 추가될 수 있도록 만들어져서 사용자에게 보다 나은 서비스를 제공해줄 수 있도록 만들어져야 할 것! ● 부팅 : 전원 버튼이 눌러져 커널이 메모리에 올라와 실행되어 장치들을 준비시키고, 각종 레지스터 값을 초기화하고 나서 사용자의 입력을 받을 준비를 마치는 것 - 전원이 꺼져 있는 상태에서 운영체제 전부는 디스크에 저장되어..

CS/운영체제 2023.03.22

Chapter1. OS란?

운영체제(Operating Systems)란? : 컴퓨터의 여러 응용 프로그램을 설치되게 해주고, 여러 가지 장치를 효율적으로 작동하도록 하며, 사용자가 컴퓨터를 손쉽게 이용할 수 있도록 해주는 프로그램의 집단. : 사용자 인터페이스(User Interface)+자원 관리(Resource Management)를 위한 프로그램의 집합. 덧붙이자면, 그 밖에도 "컴퓨터의 사용자와 하드웨어 사이에서 가교 역할을 하는 프로그램" "하드웨어 그 자체가 가지고 있는 능력을 십분 발휘되도록 제어해주는 프로그램" "컴퓨터가 컴퓨터 밖의 세계와 상호동작하는 방법을 정의한 프로그램" 의 의미를 지님. (결국 모두 같은 뜻이다) 운영체제와 시스템 프로그램을 합쳐 시스템 소프트웨어(ex. 윈도우)라 하고 (둘을 명확히 구분하..

CS/운영체제 2023.03.16