본문 바로가기

COMPUTER SCIENCE30

[OS] Deadlock Deadlock 위의 사진의 경우, S = Q = 1 일 때, P0 의 wait(S) 에 의해 S는 0이, P1의 wait(Q) 에 의해 Q 는 0 이된다. P0 가 wait(Q) 를 실행할 때, P1 이 signal(Q) 를 실행할 때까지 대기해야한다. 비슷하게 P1 이 wait(S) 를 실행할 때, P0가 signal(S) 를 실행할 때까지 기다려야 한다. 결국 P0 와 P1은 무한 대기하게 되며 이를 deadlock 되었다고 한다. resource 를 가지고 있고 다른 프로세스가 보유한 resource 를 얻기 위해 대기하는 block 된 프로세스들의 집합을 Deadlock 이라고 한다. Deadlock Necessary Conditions Deadlock 이 발생하려면 다음 네 가지 조건을 동시에.. 2023. 8. 21.
[OS] Synchronization Producer-Consumer item buffer[BUFFER_SIZE]; int in = 0; int out = 0; int count = 0; 몇 가지 변수들을 공유하며 producer 와 consumer 의 코드는 위와 같다고 하자. 이 코드들은 BUFFER SIZE − 1 크기의 버퍼를 공유하며 사용하도록 하는 코드이다. 개별적으로 보면 잘 작동할 것 같지만, 동시에 실행하면 문제가 발생할 수 있다. 예를 들어, count 가 5 이고 producer 와 consumer 가 동시에 실행된다면 "count++" 과 "count--" 이후의 count 값이 4, 5, 6 이 될 수 있다. Race Condition "count++" 과 "count--" 의 동시 실행은 위와 같이 이루어 진다. 위.. 2023. 8. 16.
[OS] Threads Thread CPU utilization 의 기본 단위로, thread ID, PC(Program Counter), reigster set , stack 으로 이루어져 있다. 같은 프로세스에 속한 스레드들은 프로세스의 code section, data section, open files 와 signals 같은 os 자원을 공유한다. Linux/Unix 와 Window 같은 현대 OS 는 multithreaded programming 을 지원한다. 프로세스는 a set of threads 와 a collection of resources 라는 두 가지 구성요소로 나눌 수 있는 복합 엔티티이다. 실행의 단위는 스레드이다. 프로세스는 실행 흐름을 담당하는 메인 스레드를 가짐 프로세스는 실행 권한을 메인 스레드.. 2023. 7. 27.
[OS] CPU Scheduling CPU Scheduling 은 멀티프로그래밍 OS 의 기초가 된다. 최신 OS 에서 실제로 OS에 의해 스케줄링 되는 것은 프로세스가 아닌 kernel-level threads 이다. (kernel-level thread 에 대해서는 Thread 에서 언급 예정) 그렇지만 프로세스 스케줄링과 스레드 스케줄링은 종종 같은 의미로 사용되며, 일반적인 스케줄링 개념을 논의할 때는 보통 프로세스 스케줄링을 사용한다. Process Concept process execution 은 CPU execution 과 I/O wai 의 순환으로 구성된다 CPU burst : Cycle of CPU execution I/O burst : Cycle of I/O wait process execution 은 CPU burst .. 2023. 7. 14.
[OS] Process - IPC (Interprocess Communication) Independent Process & Cooperating Process OS 에서 실행되는 프로세스들은 Independent process 나 Cooperating process 중 하나이다. Independent process 는 다른 프로세스에게 영향을 주거나 받을 수 없다. 즉, 다른 프로세스와 data 를 공유하지 않는 프로세스는 Independent process 이다. Cooperating process 는 다른 프로세스에게 영향을 주거나 받을 수 있다. 즉, 다른 프로세스와 data 를 공유하는 프로세스는 Cooperating process 이다. 다른 프로세스와 협력을 하는 이유는 다음과 같다. Information sharing : 동일한 정보에 접근이 필요할 수 잇음 Computat.. 2023. 7. 10.
[OS] Process - Operations on Processes Process Creation 프로세스는 새로운 프로세스들을 생성할 수 있다. 이때 새로 생성된 프로세스들은 child process, 이를 만든 프로세스는 parent process 라고 하며 프로세스들은 tree 모양을 이룬다. 대부분의 OS들은 프로세스들을 unique process identifier(pid) 로 구분한다. LInux OS 의 경우, systemd process가 모든 user process들의 root parent process 이며 system이 boot될 때 생성되는 first user process 이다. system 이 boot 되면 systemd process 는 추가적인 service들을 제공하는 프로세스들을 생성한다. Resource Sharing child proc.. 2023. 7. 10.
[OS] Process - Process Concept & Scheduling Program and Process Program disk 에 저장되어 있으며, 명령어들의 리스트를 포함하는 파일같은 passive entity program 자체는 process 가 아님 Process 실행 중인 프로그램 또는 실행 중인 프로그램의 instance 다음에 실행할 명령어를 가리키는 program counter 와 관련 resouces(memory, files, socket, etc) 들이 있는 active entity virtual address space 와 control information 으로 구성 program 은 실행가능한 파일이 메모리에 올라가면 process 가 됨 현재 활동중인 프로세스의 상태는 program counter의 값과 processor's register 의 .. 2023. 7. 3.
[DB] Join Join operation 이란 두 개이상의 relation 을 하나의 relation 처럼 만들어 주는 연산이다. Join operation 은 relation 의 tuple 들이 특정 조건에 의해 match 되기를 요구하는 Cartesian product 이다. 예시를 위해 사용할 relation 들이다. 위의 relation 은 course, 아래 relation 은 prereq 이다. Inner Join Inner join 은 모든 공통 column 들 중 같은 값을 가지는 tuple 들을 match 하고, match 되지 않는 tuple 은 유지하지 않는다. 공통된 column 은 하나만 유지한다. SELECT * FROM course INNER JOIN prereq ON course.cours.. 2023. 2. 14.
[DB] Transaction 트랜잭션 (transaction) 이란 다양한 data items 를 접근하고 갱신할 수 있는 프로그램 실행 단위이다. Transaction Properties 데이터 무결성을 지키기 위해, database system 은 ACID 특성 보장해야 한다. Atomicity (원자성) : 한 트랜잭션의 모든 연산들은 db 에 모두 반영되거나 모두 반영되지 않아야 한다. Consistency (일관성) : isolation 내의 트랜잭션의 실행은 db 의 일관성을 유지한다. 여기서 일관성은 트랜잭션 전, 후에 데이터 모델의 모든 제약조건 (기본키, 외래키, 도메인, 도메인 제약조건 등) 을 만족하는 것을 통해 보장한다. Isolation (격리성, 고립성) : 여러 트랜잭션이 동시에 발생하더라도, 각각의 트랜.. 2023. 2. 12.