본문 바로가기

전체 글

(63)
Memory Mapped File Memory Mapped File은 File에 해당하는 공간을 Process address space에 mapping 시키는 것을 말한다. 여러 프로세스에 같은 file을 mapping 시켰을 경우 Inter-process communication이 가능하다. caddr_t mmap (caddr_t addr, size_t len, int prot, int flags, int fildes, off_t off) addr: file의 시작 부분의 메모리 주소 len: mapping되는 size prot: 권한을 부여할 수 있다 flags: mapping되는 방식으로 나중에 자세히 다룰 것이다 fildes: mapping되는 file의 descriptor off: file 안에서 mapping이 시작되는 곳까지..
IPC IPC는 Inter Process Communication의 약자로, 프로세스 간 통신을 뜻한다. 앞서 살펴봤듯이, Pipe 외에도 많은 방법들이 존재한다. 이번 게시글에서는 IPC의 수단들을 구체적으로 다뤄보려고 한다. Message Queue 구조는 위와 같은 형태이다. 언뜻 보면 pipe와 비슷하다고 생각할 수 있다. 허나 중요한 차이점은 위와 같은 구조가 pipe는 데이터의 흐름이라면 message queue는 메모리 공간에 존재한다는 것이다. 또한, 두 프로세스 간이 아닌 여러 프로세스들이 활용할 수 있다. message queue를 사용하기 위해 쓰이는 함수들은 다음과 같다. int msgget (key_t key, int msgflg) key에는 message queue의 key가 들어간다,..
signal sighandler_t signal(int signum, sighandler_t handler) handler에게 signum에 해당하는 signal을 보낸다. signal은 한마디로 interrupt 하여 바로 실행하게 만드는 신호(?)이다. 긴급하게 처리해야 될 event가 있을 때 주로 사용된다. signal과 관련된 함수는 너무 많으므로 대표적인 것들을 소개해보겠다. int kill (pid_t pid, int sig) pid에 해당하는 프로세스에 sig에 해당하는 signal을 보내는 함수이다. 이 signal을 받은 프로세스는 blocking 상태라 하여도 바로 깨어난다. int raise (int sig) 자기 자신에게 signal을 보내는 함수이다. 주로 테스트를 위해 사용한다. unsig..
record lock lock에는 대표적으로 두 가지가 존재한다. Writers’s lock: Exclusive lock으로 writing 하는 process 혹은 thread가 lock을 소유하면 다른 writer나 reader는 모두 writer lock을 반환할 때까지 기다려야 한다. Reader’s lock: Shared lock으로 다른 reader는 바로 진입이 가능하다. (writer는 기다려야 함) File lock을 하는 대표적인 함수는 fcntl이다. int fcntl (int fildes, int cmd, struct flock *lock) fildes: file descriptor cmd: command to do cmd: F_GETLK: 현재 LOCK을 반환한다 F_SETLK: LOCK을 바로 얻으려고..
Pipe Pipe는 IPC의 대표적인 방법 중 하나이다. IPC는 Inter-Process Communication의 약자로 프로세스 간 서로 sharing을 가능하게 하는 수단을 말한다. 앞으로 IPC의 수단들에 관해 살펴볼 것이지만 제일 먼저 Pipe에 대해 알아보자. pipe는 두 프로세스 간에 공유하는 하나의 파일이라고 생각하면 쉽다. pipe는 named pipe와 unnamed pipe가 있는데 named pipe는 아예 관계가 없는 독립적인 두 프로세스 간에 IPC를 위해서 사용되고 부모-자식 관계에 있는 경우에는 pipe에 굳이 이름을 붙일 필요가 없으므로 unnamed pipe를 사용한다. 파일에 descriptor가 있는 것처럼 pipe에도 read 전용, write 전용 descriptor가 ..
fork, wait, exit, exec ※ 정리하는 내용은 한국외대 컴퓨터전자시스템공학부 이윤석 교수님의 수업 자료에서 대부분 참고하였음을 밝힙니다. pid_t fork(void) concurrent programming을 하기 위해 가장 기본적으로 사용되는 함수가 바로 fork이다. fork는 기존에 존재하는 프로세스를 그대로 복사하여 하나의 프로세스를 생성하는 개념이다. 이때, 기존에 있던 프로세스를 부모 프로세스, 새로 만들어진 프로세스를 자식 프로세스라고 생각하면 이해하기 쉽다. 부모와 자식은 독립적으로 존재하지만 자식은 부모로부터 대부분의 자원을 물려받는다. real/effective user-id, group-id root & working directory open files r/w offsets data, stack (초기값은 ..
안녕하세요. 지미입니다. 블로그 첫 글!!! 안녕하세요. 이제 취직 후 2달 정도 된 신입 개발자입니다. 아직 배워나가야 할 게 산더미같지만, 그래도 제가 여지껏 개발을 하면서 미리 겪은 시행착오나 제가 가지고 있는 지식들, 그리고 앞으로 마주하게 될 지식들을 여기다가 정리하면서 공유하고자 합니다. 모두들 반갑습니다~ p.s 티스토리 블로그 기능이 엄청 다양하군요. 이것도 같이 배워나가야 할 거 같네요^^