Linux
-
시스템 프로그래밍 실습 14주차 : Synchronization 2System Programming/Ubuntu Linux 2021. 11. 24. 22:52
시스템 프로그래밍 실습 14주차 : Synchronization 2 [목차] - Deadlock - Deadlock Prevention 1. Deadlock이란? : 둘 이상의 프로세스가 다른 프로세스가 점유하고 있는 자원을 서로 기다릴 때 무한 대기에 빠지는 상황 / 교착 상태라고도 한다 - P1과 P2가 리소스 A, B 둘 다를 얻어야 한다고 가정할 때, t1에 P1이 리소를 A를 얻고 P2가 리소스 B를 얻었다면 t2때 P1은 리소스 B를, P2는 리소스 A를 기다리게 됨. 하지만 서로 원하는 리소스가 상대방에게 할당되어 있기 때문에 이 두 프로세스는 무한정 기다리게 됨. Deadlock 발생 조건 1) Mutal Exclusion (상호배제) : 한 번에 프로세스 하나만 해당 자원을 사용할 수 있..
-
시스템 프로그래밍 실습 13주차 : Synchronization 1System Programming/Ubuntu Linux 2021. 11. 21. 16:41
시스템 프로그래밍 실습 13주차 : Synchronization 1 먼저, 11주차 복습! https://asidefine.tistory.com/123 시스템 프로그래밍 실습 11주차 : Pthreads [목차] - Process vs Threads - Pthreads 관련 API 종류 - Pthreads의 데이터 타입과 속성 - Pthreads 다루기 (메소드) - Creating Threads - 쓰레드를 생성한다 - Terminating Threads - 쓰레드를 종료한다.. asidefine.tistory.com - Mutex API : mutex 는 여러 개의 쓰레드가 공유하는 데이터를 보호하기 위해서 사용되는 도구로써, 보호하고자 하는 데이터를 다루는 코드영역을 단지 '한번에 하나의 쓰레드만'..
-
시스템 프로그래밍 실습 12주차 : Concurrent ProgrammingSystem Programming/Ubuntu Linux 2021. 11. 15. 17:53
시스템 프로그래밍 실습 12주차 : Concurrent Programming 먼저 10주차 Socket 내용 복습! https://asidefine.tistory.com/109 시스템 프로그래밍 실습 10주차 : Sockets 시스템 프로그래밍 실습 10주차 : Sockets [목차] - Internet Connections - Client-Server Model Client Server - Socket TCP / UDP socket 함수들 ( socket(), connect(), bind(), listen(), accept().. asidefine.tistory.com [목차] - Process-based - Thread-based - Event-based(I/O multiplexing) 네트워크에서 ..
-
시스템 프로그래밍 실습 10주차 : SocketsSystem Programming/Ubuntu Linux 2021. 11. 1. 12:10
시스템 프로그래밍 실습 10주차 : Sockets [목차] - Internet Connections - Client-Server Model Client Server - Socket TCP / UDP socket 함수들 ( socket(), connect(), bind(), listen(), accept() ) - 예제: Echo Client & Echo Server Internet Connections +) 꼭 먼저 알아야 할 기본! => 인터넷 등의 네트워크에서 통신을 원할하게 하기 위해서 필요한 공통된 통신규약, 즉 프로토콜을 지정하였다! - ISO(International Standardization Organiztion)의 OSI(Open System Interconnection)는 네트워크 계층..
-
시스템 프로그래밍 실습 9주차 : System V IPCSystem Programming/Ubuntu Linux 2021. 10. 22. 20:44
시스템 프로그래밍 실습 9주차 : System V IPC [목차] - System V IPC interface - Message Queue - Shared Memory System V IPC interface 시스템 V IPC - 시스템 V 계열 유닉스에서 개발해 제공하는 프로세스 간 통신방법 - 메시지 큐, 공유 메모리, 세마포어 공통 요소 - 시스템 V IPC를 사용하기 위해서는 IPC 객체를 생성해야 함 - IPC 객체를 생성하기 위해 공통적으로 사용하는 기본 요소는 키와 식별자 => IPC 객체를 생성하면 다음과 같은 IPC 공통 구조체가 정의된다 - ftok() : 키 생성 함수! #include #include key_t ftok(const char *pathname, int proj_id);..
-
시스템 프로그래밍 실습 8주차 : IPCSystem Programming/Ubuntu Linux 2021. 10. 17. 14:04
시스템 프로그래밍 실습 8주차 : IPC [목차] - IPC - Open Files in Kernel - I/O Redirection - Pipes - Anonymous Pipe - Named Pipe (FIFOs) IPC란? IPC = Inter Process Communication! - 프로세스들끼리 데이터를 주고 받는 기능 - IPC의 방법들 1. signals (7주차) 2. I/O Directions (3주차, 8주차) 3. Anonymous Pipe (3주차, 8주차) 4. Named Pipe (FIFO) (3주차, 8주차) 5. Shared Memory, Message Queue, etc. https://doitnow-man.tistory.com/110 [프로세스간 통신] IPC(inter..
-
시스템 프로그래밍 실습 7주차 : SignalsSystem Programming/Ubuntu Linux 2021. 10. 10. 23:13
시스템 프로그래밍 실습 7주차 : Signals [목차] Multitasking Signal - Sending a signal - Receiving a signal 들어가기 앞서 .... 의미전달에 사용되는 대표적인 방법은 메세지와 신호다. 메세지는 여러가지 의미를 갖을 수 있지만 복잡한 대신 , 신호는 1:1로 의미가 대응되기 때문에 간단하다! => 실제로는 여러 Process들에 대해 Multitasking하기 때문에 각각의 process들에게서 신호 받는 방법 -> Signal! 예를 들어 Process를 하나 만들어보자 #include #include #include #include int main(){ printf("give signal...\n"); sleep(30); exit(0); } 이후..
-
시스템 프로그래밍 실습 6주차 : DaemonSystem Programming/Ubuntu Linux 2021. 10. 3. 00:40
Daemon 목차 Process Execution Type Session Daemon - Daemon Coding Rules - Daemon Errors를 위한 Logging -> syslog daemon! - 정기적으로 프로그램을 실행시켜 주는 소프트웨어 -> cron daemon! Process Execution Type Process에는 두 가지 종류가 있다 (1) Foreground process : Shell이 process가 끝나는 것을 기다려야 한다 (2) Background process : Shell이 process가 끝나는 것 기다리지 않고, Command line 끝에 &를 붙여 Background process를 생성한다 Session Process Group - 관련 있는 프로세스..