CS/OS 10

프로세스 동기화

배경지식 프로세스는 병렬적으로 실행된다. 공유 데이터 에대한 병렬적인 접근은 데이터의 불일치를 낳는다. 데이터 일치성을 유지하기 위해서는 프로세스들의 협력적인 순차적 실행을 보장하는 메커니즘이 필요된다. Procedure Consumer Problem Procedure 와 Consumer 는 counter 를 증가시키고 Consumer 는 counter 를 감소 시킬때 동시에 Procedure process 와 Consumer process 가 counter 에 대한 연산을 진행한다면 각각의 register 에서 counter 는 6, 4 로 저장될 것이다. 그리고 결국 counter 가 register 에서 할당 되는 순서에 따라 counter 는 우리가 기대하는 5라는 값과 다르게 4 또는 6중 무작..

CS/OS 2023.06.25

Real-Time CPU Scheduling

Soft real time systems vs Hard real time system 연성 실시간 시스템 중요 실시간 프로세스가 스케줄 되는 시점에 관해 아무런 보장을 하지 않는다. 마감 시간을 지키지 못한 결과가 경미한 피해인 경우이다. 경성 실시간 시스템 태스크는 반드시 마감시간까지 서비스를 받아야 하며 마감시간이 지난 이후에 서비스를 받는 것은 서비스를 전혀 받지 않는 것과 동잉ㄹ한 결과를 낳는다. 개념 이벤트 지연시간 Event 가 발생할 때 부터 event 에 대한 사건 처리가 완료 될 때까지의 지연시간. event 는 interrupt 라고 생각할 수 있다. 두가지 유형의 지연시간이 실시간 시스템의 성능을 좌우한다. Interrupt latency (인터럽트 지연시간) CPU에 인터럽트가 발생..

CS/OS 2023.06.19

CPU - 스케줄링 알고리즘

FCFS(선입 선처리 스케줄링) 큐에 도착한 순서대로 CPU에 할당하는 방식이다. 실행 시간이 짧은 process 가 뒤로 가면 평균 대기 시간이 길어진다. Process 의 순서 때문에 대기 시간이 길어졌다 대기 시간 : P1: 0, P2 : 24 , P3 : 27 평균 대기 시간: (0 + 24 + 27) / 3 = 17 대기 시간 : P3 - 0 , P2 - 3 , P1 - 6 평균 대기 시간 : (0 + 3 + 6) / 3 = 3 이처럼 Process 의 순서에 따라서 평균 대기 시간이 달라진다. Convoy effect : 긴 프로세스 뒤에 여러 프로세스가 대기 하게 되는 호위 효과가 발생한다. 대부분의 scheduling 이 I/O bound prcoess 에 우선권을 주는 이유이다. SJF(..

CS/OS 2023.06.06

CPU 스케줄링 - 개념

Basic Concepts(기본 상식들) process 의 동작은 크게 CPU 사용, 입출력의 반복으로 볼 수 있다. CPU burst - I/O burst cycle: Process 는 cpu 실행과 I/O 대기로 이루어져있다. CPU burst 를 CPU에 어떻게 분배할지가 주요한 문제이다. CPU burst 의 길이와 분포가 주로 관심을 가져야할 부분이다. CPU burst 와 I/O burst CPU burst: cpu burst는 Process 가 한번에 CPU를 얼마나 사용하는지에 대한 시간이다. I/O burst: process 는 waiting 상태로 I/ O 동작이 시작하고 끝날 때까지를 의미한다. CPU 스케줄러 CPU 가 유휴 상태가 될 때마다 운영체제는 준비 큐에 있는 프로세스 중에..

CS/OS 2023.06.05

스레드와 병행성

스레드 스레드는 CPU 이용의 기본 단위이다. 스레드는 스레드 ID, PC, 레지스터 집합, 스택으로 구성된다. 스레드는 같은 프로세스에 속한 다른 프로세스와 코드, 데이터 섹션, 열린 파일이나 신호와 같은 운영체제 자원을 가지고 있다. thread는 실행의 단위다. CPU 스케줄링의 대상이다. 프로세스의 생성은 매우 많은 자원이 필요하기 때문에 프로세스 보다는 스레드의 생성이 더 효율적이다. 프로세스의 추가보다 thread의 생성이 쉽다. 커널 조차도 multithread 로 이루어져 있다. 병행성과 병렬성 병행성은 모든 작업이 진행되게 하여 둘 이상의 작업이 지원되는 것이다. single CPU 로 돌아가면서 실행하는 것으로 한 시점에 여러 개의 process 가 돌아가는 것은 아니다. 병렬성은 둘 ..

CS/OS 2023.06.04

PCB 와 컴퓨터 스케줄링

PCB란? 각 프로세스는 운영체제에서 프로세스 제어 블록(PCB) 에 의 해 표현된다. PCB는 특정 프로세스와 연관된 여러 정보를 수록한다. 프로세스의 상태: new, running, waiting 프로그램 캉카운터: 이 프로세스가 다음에 실행할 명려어의 주소다. CPU 레지스터들: CPU 레지스터는 컴퓨터 구조에 따라 다양한 수와 유형을 가진다. 레지스터에는 누산기, 인덱스 레지스터, 스택 레지스터, 범용 레지스터들과 상태 코드 정보가 포함된다. 프로그램 카운터와 함께 이 상태 정보는 나중에 프로세스가 다시 스케줄 될 때 계속 올바르게 실행되도록 하기 위해 인터럽트 발생 시 저장되어야한다. CPU 스케줄링 정보: 프로세스 우선 순위, 스케줄 큐에 대한 포인터와 다른 스케줄 매개변수를 포함한다. 메모리..

CS/OS 2023.06.04

프로세스의 개념과 상태

프로세스의 등장 초기의 컴퓨터 시스템은 한번에 하나의 프로그램만을 실행 했기 때문에 하나의 프로그램이 시스템을 완전히 제어하고 시스템의 모든 자원에 접근할 수 있었다. 반면 오늘날의 컴퓨터 시스템들은 메모리에 다수의 프로그램이 적재되어 병행 실행 되는 것을 허용한다. 따라서 다양한 프로그램을 제어하고 구획화할 것을 필요로 했고 이로 인해 프로세스라는 개념이 나왔다. 프로세스란 실행 중인 프로그램을 말한다. 프로세스는 현대의 컴퓨팅 시스템에서 작업의 단위이다. 프로세스의 개념 프로세스란 실행 중인 프로그램이다. 프로세스의 현재 활동 상태는 프로그램 카운터 값과 프로세서 레지스터의 값으로 나타낸다. 프로세스의 메모리 배치 텍스트 섹션 - 코드 영역 데이터 섹션 - 전역 변수 힙 섹션 - 프로그램 실행 중에 ..

CS/OS 2023.05.31

시스템 콜

시스템콜 개념 시스템 콜 시스템콜은 운영체제에 의해 사용 가능하게 된 서비스에 대한 인터페이스를 제공한다. API 각함수에 전달되어야할 매개변수들과 사용 가능한 함수의 집합을 명시한다. 보통 프로그래머들은 직접 시스템 콜을 호출하기 보다는 API 를 이용하여 간접적으로 시스템 콜을 이용하는 방법을 사용한다. API는 시스템 콜과 다르게 어느 시스템에서든 컴파일 되고 실행된다는 것을 기대할 수 있기 때문이다. 실행 시간 환경 컴파일러 또는 인터페이스를 포함하여 특정 프로그래밍 언어로 작성된 응용 프로그램을 실행하는데 필요한 전체 소프트웨어 제품군과 라이브러리 또는 로더와 같은 다른 소프트웨어를 함께 가리킨다. RTE 는 운영체제가 제공하는 시스템 콜에 대한 연결고리 역할을 하는 시스템 콜 인터페이스를 제공..

CS/OS 2023.05.31

운영 체제의 역할

사용자 입장에서의 OS 기능 운영체제는 프로그램 실행 환경을 제공한다. 운영체제는 프로그램과 프로그램의 사용자에게 특정 서비스를 제공한다. 사용자 인터페이스 거의 모든 운영체제는 사용자 인터페이스(UI)를 제공한다. GUI(그래픽 사용자 인터페이스): 메뉴와 화면을 선택하는 마우스, 텍스트를 입력할 키보드 등으로 구성되어 있다. CLI(명령어 라인 인터페이스) : 이인터페이스는 명령을 사용하며 이를 입력할 방법(키보드) 가 사용된다. 프로그램 수행 시스템은 프로그램을 메모리에 적재해 실행 할 수 있어야한다. 프로그램은 정상적이든, 혹은 비정상적이든 실행을 끝낼 수 있어야한다. 입출력 연산 수행 중인 프로그램은 입출력을 요구할 수 있다. 이러한 입출력에는 파일 혹은, 입출력 장치가 연관될 수 있다. 효율과..

CS/OS 2023.05.29

인터럽트란

배경 지식들 운영 체제(OS, Operating System) 운영체제는 컴퓨터 사용자와 컴퓨터 하드웨어 사이에서 중개자 역할을 한다. 운영체제의 목적은 사용자가 프로그램을 효율적으로 수행할 수 있는 환경을 제공하는데 있다. 운영체제는 컴퓨터 하드 웨어를 관리하는 소프트웨어다. 하드웨어는 컴퓨터 시스템의 정확한 동작을 보장하고 프로그램이 시스템의 정상적인 동작을 방해하지 않도록 하는 적합한 메커니즘을 제공해야한다. 운영체제는 컴퓨터 시스템이 동작할 때 하드웨어 자원들을 적절하게 사용할 수 있는 방법을 제공한다. 커널 운영체제의 핵심부분으로 컴퓨터에서 항상 동작하는 부분이다. 컴퓨터 사용자와 컴퓨터 HW 간의 중간 역할을 하는 프로그램이다. 컴퓨터 구조 컴퓨터 시스템은 CPU 와 메인 메모리 , 각종 IO..

CS/OS 2023.05.28