본문 바로가기

한국으로74

3.2 세마포어 3.2 세마포어3.2.1 개요프로세스의 동기화 문제두 개 이상의 프로세스가 하나의 자원에 동시에 접근하면 문제가 발생한다.이러한 문제를 막기 위해 정해진 개수의 프로세스만 해당 자원에 접근할 수 있도록 만들어주어야 한다."임계영역"을 구성해 정해진 개수의 프로세스만 코드 영역에 진입할 수 있도록 만들자! 세마포어로 해결세마포어는 코드의 특정 영역을 임계영역으로 만들어준다. 1) 세마포어 값이 1 이상인 경우 프로세스는 세마포어 값을 1 감소시킨 후 임계영역에 진입한다.2) 세마포어 값이 0인 경우 임계영역에 하나 이상의 프로세스가 진행중이므로 그 밖에 있는 프로세스는 자면서 기다린다.3) 세마포어 값이 다시 1 이상이 됐을 때 (임계영역에 있던 프로세스가 임계영역에서 탈출하면서 세마포어 값을 1 증가시킴.. 2018. 6. 27.
3.1 파이프 3.1 파이프3.1.1 | 명령$ ls /etc | grep init| (파이프명령) 을 통해 "ls /etc" 명령의 출력 결과를 "grep" 명령에 전달할 수 있다."grep" 명령은 전달받은 내용 중에서 init이 포함된 라인을 출력한다. 3.1.2 프로세스 파이프FILE* popen(const char* command, const char* type);기능: 파이프를 생성 -> fork() -> 쉘 실행 -> command 실행 -> 프로세스 생성리턴: 성공 시 주소, 실패 시 NULL 리턴type: "w", "r" //각각 쓰기전용, 읽기전용 int pclose(FILE* stream);기능: 파이프를 닫고 프로세스 종료를 기다림리턴: 실패 시 -1, 외에 command를 실행한 쉘의 종료 상태.. 2018. 6. 27.
2.2 시그널 2.2 시그널2.2.1 스탠다드 시그널 Signal Value Action Comment SIGHUP 1 Term Hangup detected on controlling terminal or death of controlling process SIGINT 2 Term Interrupt from keyboard SIGQUIT 3 Core Quit from keyboard SIGILL 4 Core Illegal Instruction SIGABRT 6 Core Abort signal from abort(3) SIGFPE 8 Core Floating-point exception SIFKILL * 9 Term Kill signal SIGSEGV 11 Core Invalid memory reference SIGPI.. 2018. 6. 27.
2.1 프로세스 2.1 프로세스2.1.1 개요프로세스는 현재 실행중인 하나의 프로그램리눅스는 멀티태스킹이 가능한 운영체제이므로 동시에 여러 개의 프로세스를 실행할 수 있다.ps 명령으로 현재 프로세스 목록을 확인해보자.[프로세스를 실행한 유저의 ID] [PID] [PPID] [COMMAND] 정보가 출력된다. PID 0 : 커널PID 1 : initPID 2 : kthreadd init은 일반 프로세스들의 조상, kthreadd는 커널 스레드로써 모든 커널 스레드의 부모가 된다. 프로세스마다 왼쪽 가상메모리 공간이 따로 존재한다.프로세스의 주소공간은 세그먼트 블럭으로 나뉘어져 있다."프로세스는 혼자서 가상메모리 공간을 다 사용한다고 생각한다" 2.1.2 프로세스 생성int system(const char* command.. 2018. 6. 27.