리눅스의 기초
vi는 리눅스 터미널에서 사용하는 대표적인 문서 편집기다.
Communication Concurrency Asynchronous operation
Processes, Thread 개요 유닉스에서는 Concurrent하게 실행할 수 있다. 프로세스를 fork function을 이용하여 여러개를 만든다. 똑같은 부모를 가지고 있는 프로세스들은 서로 통신할 수 있다. 가장 간단한 커뮤니케이션 방법으로, pipe라는 것을 통해서 통신한다. 만약 부모가 다르다면 signal, FIFO, semaph...
Process는 실행되고 있는 프로그램을 말한다.
fork()는 현재 프로세스에 자식 프로세스를 생성하는 함수이다.

Wait wait()함수는 부모에서 자식이 원하는 작업을 수행했는지 확인하는 함수이다.
exec 함수 fork 함수는 기존 프로세스에 자식 프로세스를 만들어 다음 코드 부터 실행하는 함수이다. fork함수는 다른 코드를 실행할 수 없다는 단점이 있다. 이 단점을 exec함수로 보완할 수 있다. exec함수는 새로운 코드를 가져와서 실행시키는 함수를 말한다
exit는 현재 프로세스를 종료시킨다.
UNIX의 Input과 Output

Unix는 read와 write 함수를 통해서 다른 디바이스에서 값을 읽어오거나 입력할 수 있다.
Unix는 open함수를 통해서 파일을 열 수 있다. 또한 close함수를 통해서 파일을 닫을 수 있다.
LSEEK함수는 file offset을 조정해주는 함수이다.
Unix의 File descriptor와 C의 File pointer
filter와 redirection
File and Directory
Pipe 프로세스간의 통신은 OS의 도움을 받아야 한다. Pipe는 UNIX에서 제일 간단한 통신 방법이다. Pipe는 특별한 파일로 나타난다. Pipe는 같은 시스템 안에서 작동하는 프로세스들 간에 정보를 공유하기 위한 방법이다. pipe를 실행하면 자동으로 pipe객체가 open된다. int fd[2] : pipe()는 I/O방식을 구현한다. 그렇기 ...
Basic Signal Concept 시그널은 이벤트가 발생한 것을 알려주려 프로세스에게 보내는 일종의 통지다. 시그널은 생성된 후 부터 전달 될 때 까지가 lifetime이다. 생성되었지만 아직 전달되지 않은 시그널을 pending signal이라고 한다. 프로세스는 signal handler에 의해서 전달된 signal을 포착한다. sigaction f...
POSIX Times
Threads
Mutex Mutex는 Mutual exclusion(상호 배제)의 약자이다. 어떠한 값을 두 개의 스레드가 동시에 참조(변경)하려고 하면 문제가 생길 수 있다. 그러므로 동시에 참조하는 것을 막는 것이 Mutex이다. 만약 코드에서 두 개의 스레드가 동시에 참조하려고 해도, Mutex를 통해 한 번에 하나씩 스레드가 참조하며, 다른 것이 참조하려고 하면 ...
Critical Sections과 이를 구현하는 Semaphore