목록Fundamentals (11)
코학다식
Bound-Buffered Problem shared data semaphore full = 0, empty = n, mutex = 1 producer-consumer 문제와 동일하다. empty는 counting semaphore로 초기값에 따라 wait 통과할 수 있는 개수가 달라진다. empty는 남아 있는 buffer의 수를 의미하고, full은 이미 차 있는 buffer의 수를 의미한다. /* Producer Process */ do { ... produce an item in nextp ... wait(empty); // n개가 통과한다 wait(mutex); ... add nextp to buffer ... signal(mutex); signal(full); } while(1); /* Con..
Basic Concepts 멀티프로그래밍은 CPU의 호율성을 극대화하기 위해 (프로세스) 스케줄링을 필요로 한다. 한 프로세스가 I/O 작업 등으로 CPU를 사용하지 않을 때, CPU가 아무 일도 하지 않는 일이 발생하지 않도록 다른 프로세스를 할당하는 등 CPU & I/O Burst Cycle 프로세스 실행은 CPU 실행과 I/O 대기의 사이클로 이루어진다. CPU Burst distribution 보통 지수적인 특성을 가지며, 많은 짧은 CPU burst와 적고 긴 CPU burst를 가진다. CPU Scheduler CPU Scheduler가 하는 일을 간단히 말하자면 ready queue에서 한 프로세스를 골라 실행하는 것이다. CPU 스케줄링은 크게 두 부분으로 나누어진다. algorithm: ..
Concurrency(병행성) 응용 프로그램에서 병행성의 사용은 여러 이점을 가진다. 병행성은 병행적인 프로세스들의 집합으로서 응용 프로그램을 구조화함으로써 구현될 수 있다. (e.g. fork()의 사용) Overhead in Process Model 여러 개의 프로세스를 사용하는 모델에서 각각의 프로세스는 독립적이다. 따라서 통신을 위해서는 커널을 통한 IPC가 필요하다. 이는 오버헤드가 크다. 또한 이 모델에서 PCB(Process Context Block)는 큰 크기를 가지고 있어, 각각의 프로세스의 생성과 context switching에 오랜 시간이 걸린다. What is Thread? 스레드는 CPU 스케줄링의 기본 단위 또는 한 프로세스 안에서 제어의 흐름이다. 그리고 PC, 레지스터 집합..
독립적인 프로세스들은 다른 프로세스의 실행에 영향을 주거나 받을 수 없다. 하지만 협력하는 프로세스들은 다른 프로세스의 실행에 영향을 주거나 받을 수 있다. 여러 개의 프로세스/스레드(thread)가 동시에 작업을 진행하는 것이다. 이는 정보 공유 계산 속도 증가 모듈성 편리함 등의 이점을 준다. Inter-Process Communication(IPC) IPC는 프로세스들이 통신하고 그들의 행위를 동기화하기 위한 매커니즘이다. 두 가지 방법이 존재한다. 공유된 변수(또는 메모리) 사용 메시지 전달 사용 POSIX Shared Memory(Producer) #include #include #include #include #include #include int main() { /* the size (in ..
SQL Basics 위의 사이트에서 SQL문 예제를 실행해 볼 수 있다. SQL? Structured Query Language를 의미한다. 데이터베이스에 접근하고 데이터베이스를 다루는 데에 쓰인다. 데이터베이스에서 쿼리를 실행하고, 데이터베이스로부터 데이터를 가져오고, 데이터베이스에 정보를 삽입하고/업데이트하고/삭제하고/생성할 수 있다. 또한 새 데이터베이스를 만들거나 데이터베이스에 새 테이블을 만들 수 있다. 데이터베이스에 저장된 프로시저를 생성하거나 데이터베이스에서 뷰를 생성하고 테이블, 프로시저, 뷰에 접근 허용을 설정할 수도 있다. 다양한 버전이 존재하고 버전마다 특성이 존재하지만 가장 중요한 명령(SELECT, UPDATE, DELETE, INSERT, WHEHE)은 유사하다. RDBMS란 R..
Operating System chapter 3, Processes (2) 프로세스 생성 부모 프로세스는 자식 프로세스를 생성하는데, 이는 프로세스들의 트리를 구성하게 된다. 프로세스는 프로세스 식별자(pid)를 통해 식별되고 관리된다. Resource sharing option 부모와 자식은 모든 자원을 공유한다. 자식은 부모의 자원의 부분집합을 공유한다. 부모와 자식은 자원을 공유하지 않는다. Execution option 부모와 자식은 동시에 실행된다. 부모는 자식이 종료될 때까지 기다린다. Address space option 자식은 부모의 복사체다. 자식은 그것의 안에 로드된 프로그램을 가진다. 리눅스 시스템에서의 프로세스 트리(tree) UNIX에서의 프로세스 생성 먼저 그림을 보자. > a...
Operating System charter 3, Processes (1) Process: 프로세스란 무엇일까? 실행 중인 프로그램을 말한다. 프로그램은 passive entity 프로세스는 프로그램 카운터가 동작하는 active entitiy 프로그램은 실행 가능한 파일이 메모리에 로드되었을 때 프로세스가 된다. 운영체제는 다양한 프로그램을 실행한다. Batch system - jobs Time-shared systems - tasks(interactive) 프로세스는 코드 (또는 텍스) 섹션, 데이터 섹션, 스택(stack)과 힙 섹션, 그리고 프로그램 카운터를 포함한다. 프로그램 카운터는 다음에 실행될 명령의 위치를 저장하고 있다. 실행 가능한 파일이 메모리에 로드되면 다음과 같다. 스택에는 함수의..
Operating System chapter 1-2 (4) System Boot 부팅(Booting)이란 커널을 로딩함으로써 컴퓨터를 시작하는 것을 말한다. 시스템에서 파워가 초기화되면, Bootstrap loader가 위치한, 고정된 메모리 위치(ROM)에서 실행이 시작된다. 보통 두 단계의 과정을 거친다. (mother board - hard disk) 운영체제 서비스 운영체제의 서비스 중 한 집합은 사용자에게 유용한 기능을 제공한다. 유저 인터페이스(User interface) - 거의 모든 운영체제가 사용자 인터페이스(UI)를 가진다. Command-Line Interface(CLI), Graphic User Interface(GUI), Batch 프로그램 실행 - 시스템은 메모리에서 프로그램을 ..