Hi there!

I am a student studying computer science.

728x90

시스템 프로그래밍 30

시스템 프로그래밍 14장 - Time Management

Calendar Time & Process Time Calendar time • UTC(Coordinated Universal Time) / GMT(Greenwich Mean Time) 국제표준시 – (in English) Coordinated Universal Time, – (in France) Temps Universel Coordonné • Epoch time: 1970. 1. 1. 00:00 UTC 이후 초단위 시간 • Data type: time_t Process/CPU time • In clock tick unit //cpu에서 시간 기준 1tick • 1 tick = 1 ms (Linux) or 10 ms – 1 ms = 1/1000 sec • time(1): 어떤 program을 실행했을 ..

시스템 프로그래밍 13장 - Network

Network Protocols for Communications PC와 PC 사이에 network 통신을 통해서 data를 주고 받는 program에서는 통신 위한 protocol을 이해해야한다. Protocol - error를 발생시키는 data link들 간에 error-free를 위한 사전 정의 된 통신 단계. - 일반적으로 Protocol은 multiple-layerd로 구현됩니다. 왜? - error-free 목적달성을 위해 - 너무 크다. – 다양한 abstraction추상화 수준 – 다양한 service서비스 수준 – 다양한 media미디어 및 communications types 통신 유형 에 따른 network 통신을 보장 하도록 Network 표준 OSI 7 layers (OSI re..

시스템 프로그래밍 12장 - IPC methods (Shared memory)

Shared Memory - 일반 Memory는 process는 자신만의 가상 주소공간을 가지고 다른 process가 접근할 수 없도록 강하게 보호된다.(process protection), 공유가 불가능하다 - shared memory는 공유 영역을 만들고 각 process의 가상 공간에 mapping해서 process간의 자원을 공유한다. cf. Multiple Threads in a process threads는 memory영역을 공유하고 있다. 이것을 확장해서 process간의 공유를 하는 것이다. 사용하는 방법 - multiple process들 간의 공유되는 메모리 영역을 OS kernel내에 지정한다 - 각각의 prcess memory address space에 mapping해서 사용한다. ..

시스템 프로그래밍 12장 - IPC methods (Message queue)

IPC methods of System V Message Queue 어떤 message 데이터 구조체를 data를 queue형식으로 전송 Shared Memory memory영역을 만들어서 공유한다. 하나만 접근할 수 있도록 semaphore로 접근 제한 Identifiers & Keys - Idetifier : IPC 구조체를 식별하는 방식으로 nonnegative interger - key : IPC 구조체를 생성할 때 key를 지정한다 id = xxxget(key, ...) - HOW TO? key를 정의한다. in a common header Client 와 Server가 사용을 동의한다. 공유되어야 한다. Server는 key를 사용하기 위한 새로운 IPC 구조체를 만든다 key가 이미 사용되고..

시스템 프로그래밍 12장 - IPC methods (FIFO)

IPC methods Pipe FIFO Message Queues Shared Memory (b/w processes) FIFO (named pipe) Revies on pipe() - 가장 오래된 IPC - data 전송하기 위해 두 개의 pipe를 만들어서 읽고 쓸 수 있도록 한다. - pipe가 full or empty일 경우 blocked한다. - 한계 half duplex (한쪽으로만 흐른다) 부모자식관계에서만 가능하다 process간 넘겨줄 수 없다. 상속한 모든 자식은 pipe가 생긴다. 사용하지 않는 fd는 무조건 closed되어야한다. FIFO Pipe는 상속관계에서만 가능하다는 한계를 극복하기 위한 IPC Pipe와 유사하게 동작한다. 하지만 관계없는 process들 끼리 매개체를 통해..

시스템 프로그래밍 11장 - Timer

#include int setitimer (int which, const struct itimerval *value, struct itimerval *oval); interval time, 자기가 설정한 시간마다 event발생하도록 설정 주기적으로 signal이 생성된다. which : timer type ITMER_REAL : 실제시간 마다 ITIMER_VIRTURE : user mode 시간 ITIMER_PROF : process running time user mode+kernel mode value : 설정할 시간 값 itemerval oval : 현재 설정된 timer interval 값 return 0 / -1 #include int getitimer (int which, struct itim..

시스템 프로그래밍 10장 - Signal 2

#include int sigprocmask(int how, const sigset_t *set, sigset_t *oset); 어떤 signal이 전달되었을 때 전달 받지 않도록 mask한다. signal을 block / unblock한다. block되면 unblock될 때가지 연기된다. how : block / unblock 할건지에 대해서 set : 프로세스에서 signal에 대해 설정한 변수(setting 된 값) sigset_t(process에서 blocking을 하거나 unblocking을 할 signal에 설정을 해준 data값)에 원하는 signal을 masking할건지 안할건지 setting된 변수. 별도 함수로 setting한다. oset : 현재 setting된 mask값을 반환받을 ..

시스템 프로그래밍 10장 - Signal 1

시스템에서 커널의 내부적 이벤트와 연관된 process에게 신호를 전달 process입장에서 비동기적으로 전달받고 이벤트를 handling하는 메커니즘을 동작시킨다. --> signal handling User's View 자신이 프로그램이 실행되다 signal을 받으면 멈추고 signal을 처리하는 handler를 수행 handler가 없으면 default 핸들러가 실행된다. signal에 따라 프로그램 종료를 하거나 signal을 처리하고 다시 이어서 실행한다. Kernel's View - kernel은 여러 signal이 있다. - signal이벤트가 발생하면 해당 event가 발생했다는 것을 check한다. - 이벤트와 연관된 process의 control block에 signal 체크한다. - ..

시스템 프로그램 9장 - Semaphore

semaphore system call thread의 mutex와 유사하다. 공유된 자원을 동기화할 수 있는 기법 1960대 dijkstra에 의해 설계되었다. Thread, Process들이 resource를 공유하는 영역인 critical section을 제어하는데 사용한다. 기본적인 특징 (개념적으로 유사하다) -상호배제를 위해 접근을 막거나 허용하는 것을 block/wackup algorithm -다른 process가 사용하고 있어서 어떤 process가 접근할 수 없으면 wait큐에 process를 넣어주고 끝나면 깨운다release한다. - wake que를 하기 때문에 cpu time소모가 없다 - 여러 process가 접근하면 wait que를 사용한다. Counting Semaphore ..

시스템 프로그래밍 8장 - Memory 1

메모리란? Process가 program을 실행되는데 필요한 가장 기본적인 자원중 하나이다. - Process입장에서 address space(가상공간의 주소)내에서 Memory가 할당되고 해제되는 방식으로 사용된다. - 그 후 커널이 각 process의 가상공간의 Memory영역을 물리적 Memory에 mapping한다. - 그래서 process는 실제 물리적 Memory할당에 관여할 필요가 없다. - 가상공간의 address space가 낮은주소 부터 높은 주소까지 만들어지고, 특징적으로 나누어진다. - 커널에서 페이지 단위로 관리한다. 이 공간을 어떻게 할당하고 해제하는지 알아본다. - Text 영역 - Initialized data 초기화된 데이터 영역 - Uninitialized data(bss..

728x90