CS(15)
-
[OS] Operating System - CPU Scheduling
CPU Scheduling 스케줄링은 멀티프로그래밍을 위한 운영체제의 기본 개념이다. 멀티프로그래밍 여러 프로세스가 같은 시간 내에 동시에 운용이 되는 것 CPU의 사용률을 최대로 사용하는 것이다. CPU 스케쥴러 메모리에 존재하는 프로세스 중에 하나의 프로세스를 고르는 것 이때 메모리에 존재하는 모든 프로세스가 선택의 조건을 만족하는 것이 아니다. 프로세스 중에서 준비-ready 상태에 있는 프로세스만 자원 할당의 대상이 될 수 있다. 메모리에 존재하는 프로세스는 스케줄러에 의해 ready queue에서 선택되면 CPU에 할당이 된다. DIspatcher - 디스패처 CPU 스케줄링 과정의 일부, 다음 실행될 프로세스에게 CPU 제어권 전달의 역할 문맥교환, 프로세스 전환, 스케줄링 정보 유지를 담당하..
2024.01.19 -
[OS] Operating System - Thread & Concurrnecy
Thread 프로세스 내에서 실행되는 여러 흐름의 단위 프로세스 내에서 실제로 작업을 수행하는 주체이다 구성 ThreadID 스레드 고유 식별자 운영체제는 이 ID를 사용하여 각 스레드를 구별한다 Program Counter (PC) 스레드가 현재 실행 중인 코드의 주소를 가리키는 역할 스레드가 다음에 어떤 명령을 실행할지 결정하는 데 사용 register set 스레드의 현재 작업에 필요한 데이터와 명령을 저장하는 레지스터들의 집합 스레드의 현재 상태를 나타내며, 스레드 전환 시 저장 및 복원 stack 스레드의 함수 호출, 지역 변수, 반환 주소 등을 저장하는 메모리 영역 각 스레드는 독립적인 스택을 가지며, 이는 스레드 간 데이터 충돌을 방지하는 역할 특징 프로세스보다 생성과 관리가 더 경량화되어 ..
2024.01.04 -
[OS] Operating System 01 - Introduction 02
메모리 계층 구조 컴퓨터 시스템에서 데이터 저장과 접근을 효율적으로 관리하기 위한 구조이다. 해당 구조 내부에서는 다양한 유형의 메모리를 보여준다. 여러 유형의 메모리는 속도, 용량, 비용의 특성을 감안하여 계층적으로 배치가 된다. 상위에 배치된 항목일수록 속도가 빠르고 가격이 비싸며 용량이 적다. 반대로 하위로 넘어갈수록 속도는 느려지지만 가격은 저렴해지고 용량은 커진다 레지스터(Register) cpu내부에 위치하며 가장 빠른 접근 속도를 제공한다 작은 용량을 가지고 있으며 cpu가 현재 처리하는 명령어와 데이터를 저장하는 역할을 한다 캐시(Cache) cpu와 메인메모리 사이에 존재한다 레지스터보단 느리지만 메인메모리보단 빠른 속도를 가지고 있다 자주 사용되는 데이터를 임시로 저장하여 cpu가 메인..
2023.12.28 -
[OS] Operating System 01 - Introduction
시작 1학기에 운영체제 수업을 듣기 전에 먼저 운영체제에 대해 예습을 하고 그 과정을 기록하기 위해 시작하였다. 유튜브에 있는 공룡책 강의를 보면서 해당 내용을 정리하면서 배운 내용을 기록하려고 한다. [OS] Operating System 01 - Introduction 운영체제 컴퓨터 내부에서 항상 실행이 된다 윈도우, 리눅스, Mac과 같은 소프트웨어 응용 프로그램 또는 사용자가 컴퓨터 하드웨어를 편리하고 효율적으로 사용하기 위해 시스템 자원을 관리하고 여러 가지 프로그램이 필요로 하는 공통적인 서비스를 제공하는 역할을 한다. 이때 시스템 자원은 메모리, 프로세서 등의 자원을 의미한다. 정보 불확실성을 측정하거나 줄이기위해 사용되는 정량적 표현이다 정보(I)는 사건의 발생확률 P(x)에 반비례한다 ..
2023.12.27 -
[시스템 프로그래밍] 프로세스
process, task 혼용 살아 움직이는 프로그램을 의미 디스크에서만 존재하던 프로그램 및 데이터가 메모리로 올라오면서 생성 프로세스와 관련된 시스템 콜 fork(), clone() : 프로세스 생성 task_struct 생성 execve() : excute a new program(loading) → 디스크에서 메모리로 데이터를 옮기는 과정 컴파일 된 프로그램을 실행할 때 사용되는 시스템의 구성요소 중 하나인 loader의 역할과 유사 해당 함수는 새로운 프로그램의 실행 가능한 파일을 메모리로 로드하고, 그 파일을 실행할 새로운 프로세스 생성 execve()를 호출하면 현재 프로세스의 메모리 이미지(txt, data, stack,heap..)가 새로운 프로그램의 코드와 데이터로 대체 → 로더가 하는..
2023.10.30 -
[Operate System] Thread
Thread 스레드 - 프로세스 내에서 프로세스의 자원을 이용하는 여러 실행 흐름의 단위이다. 스레드는 프로세스 내의 Code, Data, Heap 영역은 다른 스레드와 공유하고 stack의 영역은 따로 할당 받음 프로세스와 해당 프로세스 내의 다른 스레드와 자원과 공간을 공유하면서 사용 스레드는 프로세스 내의 Code, Data, Heap 영역은 프로세스 내의 다른 스레드와 공유하고 임시 메모리 영역인 Stack만 따로 할당받는다. 즉 기본적으로 처음부터 생성이 되는 static 변수, 메서드 등의 고정적으로 메모리에 할당이 되는 요소들을 제외한 각자의 값들은 각자의 stack에 담겨서 사용이 되는 것이다 Multi Thread 멀티 스레드 - 하나의 프로그램을 여러 개의 스레드로 구성하고 각 스레드가..
2022.11.18