CS/operating system 28

Process Management: 프로세스 관리 (2/3)

5. 프로세스를 스케줄링하기 위한 큐 큐는 각 프로세스의 PCB를 연결리스트 형태로 관리하며 포인터를 사용해 순서를 정한다. 준비 큐(ready queue) 현재 메모리 내에 있으면서 cpu를 잡아서 실행되기를 기다리는 프로세스의 집합, waiting 상태이므로 메모리에 올라가있음 장치 큐(device queue) I/O device의 처리를 기다리는 프로세스의 집합, blocked 상태 작업 큐(job queue) 현재 시스템 내에 있는 모든 프로세스의 집합, 작업 큐에 속한다고 메모리를 가진 것은 아님 운영체제는 준비 상태에 있는 프로세스들을 줄세우고 cpu를 나눠주기 위해서 준비 큐를 둔다. 그리고 큐의 선입선출 특성을 이용하여 제일 앞에 서 있는 프로세스에게 cpu를 할당한다. 이때 준비 큐에 프..

CS/operating system 2021.02.10

Process Management: 프로세스 관리 (1/3)

1. 프로세스의 개념 Process is a program is execution. 실행 중인 프로그램이 프로세스이다. 디스크에 존재하던 실행 파일이 메모리에 적재되고 프로그램이 CPU를 할당 받아 명령(instruction)을 실행하기 시작하면 비로소 생명력을 갖는 프로세스가 된다. 잡(job)이라는 용어와 프로세스를 혼용해 사용하기도 한다. 프로세스를 이해하기 위해서는 프로세스 문맥(process context)에 대해 알 필요가 있다. 프로세스 문맥이란 프로세스가 현재 어떤상태에서 수행되고 있는지 정확히 규명하기 위해 필요한 정보를 의미한다. 프로세스가 시작해서 종료할 때까지 cpu에서 명령을 한꺼번에 수행하는 것이 아니라, 여러 프로세스가 cpu를 나눠쓰는 시분할 시스템 환경에서는 타이머 인터럽트..

CS/operating system 2021.02.09

Program Execution: 프로그램의 실행(메모리 로드) 2/2

4. 사용자 프로그램이 사용하는 함수 * 사용자 정의 함수 자신의 프로그램에서 정의한 함수(프로그래머 본인이 직접 작성한 함수). 함수 호출시에 프로세스 자신의 주소 공간 스택을 이용한다. 프로세스 자신의 address space의 코드 공간에 기계어 명령으로 있다. * 라이브러리 함수 자신의 프로그램에서 정의하지 않고 갖다 쓴 함수, 자신의 프로그램 실행 파일에 포함, 함수 호출시에 프로세스 자신의 주소 공간 스택을 이용한다. 프로세스 자신의 address space의 코드 공간에 기계어 명령으로 있다. * 커널 함수 운영체제 프로그램의 함수, 커널 함수의 호출 = 시스템 콜, 하드웨어 및 소프트웨어가 cpu의 서비스를 요청하기 위해 발생시키는 인터럽트 처리 함수 함수. 커널의 주소 공간 중 코드 공간..

CS/operating system 2021.02.08

Program Execution: 프로그램의 실행(메모리 로드) (1/2)

1. 프로그램의 구조와 인터럽트 프로그램이 CPU에서 명령을 수행하려면 해당 명령을 담은 프로그램의 주소영역이 메모리에 올라가 있어야 한다. 프로그램의 주소 영역은 크게 code, data, stack 영역으로 구분된다. code = 작성된 프로그램 함수들의 코드가 cpu에서 실행할 기계어 코드로 변환되어 저장된다 data = 자료구조, 전역 변수 등 프로그램이 사용하는 데이터를 저장하는 부분 stack = 함수 호출, 리턴 시 데이터(복귀할 주소 및 데이터)를 임시로 쌓았다가 썼다가 프로그램 호출 시 함수 프로그램은 처음에 메인 함수의 코드를 cpu가 수행하다가 다른 함수가 호출되면 그 함수 위치로 점프해 그 함수를 실행하고 완료한 뒤에는 원래 호출했던 함쉬 위치로 돌아온다. 이때 돌아와야 하는 지점(..

CS/operating system 2021.02.04

System Structure: 컴퓨터 시스템의 동작 원리 (3/3)

컴퓨터 시스템의 동작 원리 (2/3) 에서 이어지는 포스트이다. 9. 하드웨어 보안 우리에게 대중적은 운영체제는 다중프로그래밍(multi-programming) 환경에서 동작한다. 그러므로 각 프로그램이 다른 프로그램의 실행을 방해하거나 프로그램 간에 충돌을 일으키는 문제를 막기 위해서 하드웨어에 대한 각종 보안 기법이 필요하다. 하드웨어적 보안을 유지하기 위해 운영체제는 기본적으로 커널모드와 사용자모드 두 가지 모드를 지원한다. 커널 모드(모니터 모드, 시스템 모드)는 운영체제가 CPU의 제어권을 가지고 운영체제 코드를 수행하는 모드로써 이 모드에서는 모든 종류의 명령을 전부 실행할 수 있다. 반면 사용자모드에서는 사용자 프로그램을 수행하며 결국 한정된 instruction만 수행이 가능하다. 시스템에..

CS/operating system 2021.02.03

System Structure: 컴퓨터 시스템의 동작 원리 (2/3)

컴퓨터 시스템의 동작 원리 (1/3)에서 이어진다. 5. 입출력 구조 입출력(I/O)란 컴퓨터 시스템이 컴퓨터 외부의 입출력 장치들과 데이터를 주고받는 것을 말한다. - 동기식 입출력(Synchronous I/O) 어떤 프로그램이 입출력 요청을 했을 때 입출력 작업이 완료된 후에야 그 프로그램이 후속 작업을 수행할 수 있는 것을 말한다. 예를 들어 디스크에서 어떤 것을 읽어오라는 요청을 받으면 그 디스크 입출력이 완료될 때까지 그 프로그램의 다음 명령을 수행하지 않고 기다린다. 그러다가 입출력이 완료되어 인터럽트가 발생되면 그제서야 cpu 제어권이 그 프로그램에게 넘어가서 다음 명령을 수행할 수 있게 된다. 따라서 I/O가 끝날 때까지 CPU를 낭비시키며 매 시점 하나의 I/O만 일어날 수 있게 된다. ..

CS/operating system 2021.02.02

System Structure: 컴퓨터 시스템의 동작 원리(1/3)

컴퓨터 시스템의 동작 원리에 대해서 3번의 포스트에 나누어 다루도록 하겠다. 이번 포스트에서는 1. 컴퓨터 시스템의 구조 컴퓨터 시스템의 구조는 컴퓨터 내부 장치인 cpu, 메모리와 외부 장치(I/O device)인 디스크, 키보드, 마우스, 모니터, 네트워크 장치 등으로 구성된다. 메모리 및 입출력장치 등의 각 하드웨어 장치에는 컨트롤러라는 것이 붙어있다. 그 디바이스를 전담하는 작은 cpu라고 생각하면 된다. 프로그램이 수행되려면 그 프로그램이 메모리에 올라가 있어야 한다. 운영체제는 컴퓨터가 부팅되었을 때부터 항상 수행되면서 각종 자원을 관리해야 하므로 항상 메모리에 올라가 있다. 하지만 항상 운영체제의 모든 부분이 메모리에 올라가있다면 쓰지 않는 부분도 많으므로 메모리의 낭비가 심하다. 따라서 항..

CS/operating system 2021.02.02

운영체제 개요

-운영체제란? 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 소프트웨어를 연결하는 소프트웨어 계층이다. 운영체제의 목표는 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공하는 것(동시 사용자/프로그램들이 각각 독자적 컴퓨터에서 수행되는 것 같은 환상을 제공)이며, 하며, 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행해준다. 목표를 1. 각종 소프트웨와의 interaction, 2. 컴퓨터 하드웨어와의 interaction(컴퓨터 시스템의 자원을 효율적으로 관리 - 소프트웨어 자원까치 통칭(프로세서: CPU, 기억장치: memory, 입출력장치: hard disk 등- 을 효율적으로 관리) 이렇게 두 가지로 나눌 수도 있다. 즉, OS의 목표를 정리하자면 1. 각종 소프트웨어와의 inter..

CS/operating system 2021.02.01