본문 바로가기

STUDY

(30)
Synchronization in LINUX - POSIX Semaphore로 producer-consumer 해결하기 동기화 기법 중 semaphore를 사용하는 방법을 알아보자 synchronization 2 지난 포스트에서 동기화 기법인 Lock에 대해서 살펴보았다. 하지만 spinlock이나 disabling interrupt는 short, simple critical section에서만 효과적이다. Mutual exclusion을 제외하고는 별달리 뭘 해주지 않기.. josushell.tistory.com Semaphore Implementation 은 두가지로 되어있다. - POSIX semaphore : 주로 스레드 동기화에 사용됨 - System V Semaphore : 주로 프로세스 동기화에 사용됨 이 중에서 IEEE에서 정한 UNIX의 표준 (syscall 기준)인 POSIX library로 알아보자. ..
IPC in LINUX - Shared Memory IPC 방법 중 shared memory를 사용하는 방법에 대해서 알아보자. shared memory에 대한 것은 다음 포스팅을 참고하면 좋다. process concept process가 무엇인가? process는 프로그램 실행 흐름의 가장 기본적인 단위이다. 다들 이렇게 설명하는데 사실 뭔 소린지 이해가 안갈 수 있다. 그럴때는 프로그램 실행을 위한 작업의 대상, 즉 os가 sc josushell.tistory.com Shared Memory는 IPC 중 가장 빠른 방식이다. message passing 처럼 데이터를 kernel에 copy해야하는 일이 없기 때문이다. 하지만 운영체제가 IPC에 개입하지 않는 만큼, 동기화는 개발자가 직접 맞추어야 한다. 즉 데이터가 없을 때 데이터를 읽는 접근에 대..
IPC in LINUX - Message Passing IPC, Inter Process Communication IPC는 프로세스 간의 정보를 주고 받는 매커니즘이다. 즉 프로세스 간의 동작을 동기화하여 통신을 한다. IPC에는 두가지 모델이 있다. - message passing - shared memory 자세한 내용은 process 글을 참고하면 좋다. process concept process가 무엇인가? process는 프로그램 실행 흐름의 가장 기본적인 단위이다. 다들 이렇게 설명하는데 사실 뭔 소린지 이해가 안갈 수 있다. 그럴때는 프로그램 실행을 위한 작업의 대상, 즉 os가 sc josushell.tistory.com LINUX, UNIX 에서 IPC는 크게 5가지이다. - pipe - FIFO - message queue - shared ..
Files and Directories in LINUX 리눅스에서 파일과 디렉토리 시스템을 다루는 방법을 알아보자 LINUX 파일 시스템의 구조에 대해서는 다음 포스팅을 참고하면 좋다. LINUX is not UNIX 이지만 기본적으로는 UNIX의 구조를 따르기 때문이다. Implementing File System 운영체제에서 file system의 구현은 다음과 같이 두 가지의 형태이다. 1. On-disk structure hard-disk 라고 불리는 secondary storage에 있는데 2차 저장장치에 구현된 구조이다. 2. In-memory structure memory.. josushell.tistory.com File Status # include # include int stat(char *pathname, struct stat *buf)..
SIGNAL in LINUX 운영체제를 공부하면 반드시 배우게 되는 것이 interrupt이다. 이때 interrupt는 크게 두가지로 구분할 수 있다. Hardware Interrupt : I/O 작업과 같은 이벤트 cpu와 I/O 간의 작업을 비동기로 처리하고 cpu에게 완료했음을 알려주는 것이 interrupt이다. Software Interrupt : 비동기로 이루어지는 이벤트에 대해 신호들을 주고 받는 것 즉 signal이다. 이러한 signal을 어떻게 요청하고 처리하는지 정리해보자 SIGNAL Action os는 signal이 온 경우 어떻게 대처를 하는가? signal 처리는 크게 두 가지 방식으로 이루어진다. 1. signal handler를 등록된 함수를 실행 2. signal handler가 없는 경우 Defau..
Process and Threads in LINUX linux 환경에서 C로 multi-process, multi-thread 를 다루는 것을 정리해보자 process와 thread가 무엇인지는 예전에 쓴 포스팅을 참고하기를 바란다. process concept process가 무엇인가? process는 프로그램 실행 흐름의 가장 기본적인 단위이다. 다들 이렇게 설명하는데 사실 뭔 소린지 이해가 안갈 수 있다. 그럴때는 프로그램 실행을 위한 작업의 대상, 즉 os가 sc josushell.tistory.com multi-thread programming 앞에서 배운 multi-process programming은 마냥 좋기만 할까? 딱히 그렇지도 않다. process process는 기본적으로 Heavy-weight이다. 즉 프로세스 1개를 만드는 것은 ..
File I/O functions in C Library File I/O in C Library 지난 포스팅에서는 리눅스에서 제공하는 file-i/o 를 위한 system call 이었다. File I/O system call in LINUX UNIX 계열 운영체제에서 파일의 종류는 크게 두 종류이다. 하나는 regular file, 우리가 흔힌 생각하는 파일이다. 예를 들면 txt, c, cpp 등등 또 다른 하나는 I/O device를 file 로 추상화한 special file이다... josushell.tistory.com 이와 비슷하게 파일 입출력 함수를 C 표준 라이브러리에서도 제공한다. 다음은 가장 자주 쓰이는 함수들이다. fopen fgetc/ fputc fgets/ fputs fread fwrite fseek ftell rewind fflush..
Secondary Storage Architecture Disk Scheduling : 하드웨어 효율을 위해서 하드 디스크의 헤드 움직임을 줄이도록 스케줄링하는 것이다. 즉 스케줄링을 잘해서 디스크 seek time을 줄이는 것이 목표이다. 디스크의 구조 디스크는 arm이라고 불리는 축을 중심으로 헤드라고 하는 장치가 판을 돌며 read, write를 시도한다. 이때 데이터가 있는 트랙에 헤드가 위치하도록 찾아서 이동하는 시간이 바로 seek time이다. 우리나라 말로 하면 '탐구 시간'이다. 탐구 시간을 줄여야 효율이 좋다. 디스크 스케쥴링 알고리즘은 이 트랙을 찾는 순번에 대한 절차를 결정한다. Disk Scheduling Algorithms FCFS : queue에 들어온 순서대로 이동한다. 이동거리는 sector 사이의 거리이다. 위와 같이 FCFS..