분류 전체보기 390

CPU Scheduling 1

CPU burst와 I/O burst CPU burst CPU 버스트는 사용자 프로그램이 CPU를 직접 가지고 빠른 명령을 수행하는 단계이다. 이 단계에서 사용자 프로그램은 CPU 내에서 일어나는 명령 (ex. Add)이나 메모리(ex. Store, Load)에 접근하는 일반 명령을 사용할 수 있다. I/O burst I/O 버스트는 커널에 의해 입출력 작업을 진행하는 비교적 느린 단계이다. 이 단계에서는 모든 입출력 명령을 특권 명령으로 규정하여 사용자 프로그램이 직접 수행할 수 없도록 하고, 대신 운영체제를 통해 서비스를 대행하도록 한다. 이처럼 사용자 프로그램이 수행되는 과정은 CPU 작업과 I/O 작업의 반복으로 구성된다. CPU bound process와 I/O bound process 각 프로..

OS 2023.11.24

Process Management 1 & 2

프로세스 생성 운영체제가 최초의 프로세스를 생성하면, 이미 존재하는 프로세스가 다른 프로세스를 복제 생성한다. 이때 기존 프로세스를 부모 프로세스라 하고, 새로 생긴 프로세스를 자식 프로세스라고 부른다. 프로세스의 트리 (계층 구조)를 형성한다. 프로세스는 자원을 필요로 한다. 운영체제에게 받는다. 부모와 공유한다. 자원의 공유 부모와 자식이 모든 자원을 공유하는 모델 일부를 공유하는 모델 전혀 공유하지 않는 모델 수행 (Execution) 부모와 자식이 공존하며 수행하는 모델 (이때는 부모와 자식이 CPU를 획득하기 위해 경쟁하는 관계가 됨) 자식이 종료(terminate)될 때까지 부모가 기다리는(wait) 모델 주소 공간 (Address space) 자식은 부모의 공간을 복사한다. (프로세스 ID를..

OS 2023.11.24

Process 2 & Process 3

Thread란 정의 프로세스 내에서 실행 되는 여러 흐름의 단위 혹은 프로세스가 할당 받은 자원을 이용하는 실행 흐름의 단위를 뜻한다. 구성 program counter register set stack space 쓰레드마다 CPU 관련 정보들을 각자 가지고 있어야 한다. Thread가 다른 Thread와 공유하는 부분 code section data section OS resources Thread끼리 Address space의 data, code 영역은 공유하되 stack은 별도로 할당 받는다. PCB에서는 program counter와 register set을 제외한 프로세스 관련 정보 및 자원을 모두 공유한다. 여기서 thread들이 공유하는 부분인 code section, data section..

OS 2023.11.23

Process 1

프로세스의 개념 프로세스는 실행 중인 프로그램이다. 프로세스의 문맥 (Context) 프로세스가 시작해서 종료할 때까지 CPU에서 명령을 한꺼번에 수행하면 좋겠지만, 여러 프로세스가 함께 수행되는 시분할 환경에서는 CPU를 자주 빼앗기고 획득하게 된다. 따라서 CPU를 다시 획득해 명령의 수행을 재개하는 시점이 되면, 이전 CPU 보유 시기에 어느 부분까지 명령을 수행했는지 정확한 상태를 재현할 필요가 있다. 이때 정확한 재현을 위해 필요한 정보가 바로 프로세스의 문맥이다. PC 레지스터가 어디를 가르키고 있는가, 함수를 호출 했다면 스택에 무슨 내용을 쌓아놓고 있는가, 변수의 값이 변경 됐으면 지금 무슨 값을 가지고 있는가 등 프로세스의 모든 상태를 담고 있는 것 프로세스의 문맥은 3가지로 나눌 수 있..

OS 2023.11.23

System Structure & Program Execution 1

컴퓨터 시스템의 구조 큰 흐름 컴퓨터 시스템의 구조는 컴퓨터 내부 장치인 CPU, 메모리와 컴퓨터 외부 장치(입출력 장치)인 디스크, 키보드, 마우스, 모니터, 네트워크 장치 등으로 구분된다. 컴퓨터는 외부 장치에서 내부 장치로 데이터를 읽어와 (input) 각종 연산을 수행한 후, 그 결과를 외부 장치로 내보내는(output) 방식으로 업무를 처리한다. 각 요소에 대한 설명 Memory 메모리는 CPU가 직접 접근할 수 있는 내부 기억 장치로서 특정 프로그램이 CPU에서 실행되려면 해당 부분이 메모리에 올라가 있어야 한다. Device Controller I/O Device에는 Device Controller라는 것이 붙어 있다. 컨트롤러는 일종의 작은 CPU로서, 각 하드웨어 장치를 제어하는 역할을 ..

OS 2023.11.19

Introduction to Operating Systems

운영 체제의 정의 운영 체제(operating system)란 컴퓨터 하드웨어 바로 윗 단에 설치되는 소프트웨어를 말한다. 운영 체제는 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층이다. 운영 체제 자체도 하나의 소프트웨어로서 전원이 켜짐과 동시에 메모리에 올라간다. 하지만 운영 체제처럼 규모가 큰 프로그램이 모두 메모리에 올라간다면 한정된 메모리 공간의 낭비가 심할 것이다. 따라서 운영 체제 중 항상 필요한 부분만을 전원이 켜짐과 동시에 메모리에 올려 놓고, 그렇지 않은 부분은 필요할 때 메모리로 올려서 사용하게 된다. 좁은 의미의 운영 체제 메모리에 상주하는 운영 체제의 부분을 커널(kernel)이라고 부르며 운영 체제의 핵심 부분이다. 넓은 의미의 운영 체제 커널 뿐 아니라 ..

OS 2023.09.22

recoverability

지난 포스팅에서 schedule과 serializable에 대해서 알아보았습니다. 지난 포스팅에 대해서 요약해봅시다. schedule은 여러 트랜잭션이 실행될 때 각 트랜잭션에 속한 operation들의 실행 순서이며, 여러 케이스의 schedule이 존재한다고 했습니다. 그리고 schedule에는 nonserial schedule과 serial schedule이 존재하며, nonserial schedule은 비정상적인 결과를 도출할 수 있습니다. 하지만 nonserial schedule이 동시에 여러 트랜잭션을 처리할 수 있어 같은 시간동안 serial schedule에 비해 더 많은 트랜잭션을 처리할 수 있습니다. 그래서 nonserial schedule이 serial schedule과 equival..

데이터베이스 2023.08.26

schedule, serializability

Schedule transaction1: A가 B의 계좌에 20만원을 이체하는 작업 transaction2: B가 자신의 계좌에 30만원을 입금하는 작업 이렇게 두 개의 트랜잭션이 존재합니다. 여러 트랜잭션이 동작할 때 여러 트랜잭션에서 수행해야 하는 작업들의 순서를 나열한 것을 scehdule이라고 합니다. 설명이 좀 복잡하니까 예를 들어 살펴봅시다. transaction1: A가 B의 계좌에 20만원을 이체하는 작업 r1(A): A의 계좌를 조회합니다.(DB read) w1(A): A의 계좌에서 20만원을 뺍니다.(DB write) r1(B): B의 계좌를 조회합니다.(DB read) w1(B): B의 계좌에 30만원을 더해줍니다(DB write) transaction2: B가 자신의 계좌에 30만원..

데이터베이스 2023.08.25

인터페이스 (Interface)

Java 8 이후의 Interface의 특징 1. 인스턴스를 생성할 수 없고 상수만 가질 수 있다. 2. 메서드 body가 없는 추상 메서드를 가진다. 3. default 메서드, static 메서드를 가질 수 있다. default 메서드가 추가된 이유 이미 작성된 인터페이스에서 기능을 추가하려고 할 때, 디폴트 메서드가 없다면 구현체 클래스들이 전부 새로운 메서드를 override해야하지만, 디폴트 메서드가 있으면 추가 작업없이 하위호환 가능 Interface를 써야 하는 이유 public interface Singer { void sing(); } public interface SongWriter { void compose(); } public class SingerSongWriter implemen..

TIL 2023.08.25

인터럽트가 무엇인지 설명해 주세요.

Interrupt(인터럽트)는 프로그램을 실행하고 있는 도중에 입출력 요청 혹은 예외 상황을 처리해야 하면 실행하던 프로그램을 멈추고 CPU가 해당 작업을 처리하도록 하는 것을 의미합니다. 꼬리 질문 인터럽트는 어떻게 처리하나요? 더보기 1. 인터럽트가 발생하면 현재 실행중인 프로그램을 중단하고 PCB에 상태를 저장한다. 2. 인터럽트 서비스 루틴에 대한 정보를 담고 있는 인터럽트 벡터를 찾는다. 3. 인터럽트 서비스 루틴에 따라 인터럽트를 처리하고 PCB를 다시 불러와 중단된 작업을 이어서 수행한다. Polling 방식에 대해 설명해 주세요. 더보기 CPU가 작업을 진행하다 입출력 명령을 만나면 직접 입출력 장치에서 데이터를 가져오는 방식으로 입출력을 하는 동안 다른 작업을 하지 못하기 때문에 작업 효..

OS 2023.08.17