CS/시스템 프로그래밍2022. 6. 20. 22:47시그널(signal) -Infinite

이번 포스팅은 8장 시그널에 대하여 알아보도록 하겠습니다. ● 시그널(Signal) - 시그널은 소프트웨어 인터럽트이다. - 시그널은 비동기적으로 프로세스에 신호를 보낸다. 시그널은 다음과 같은 세 가지 경우에 발생한다. 1. 0으로 나누기처럼 프로그램에서 예외적인 상황이 일어나는 경우 2. 프로세스가 kill() 함수와 같이 시그널을 보낼 수 있는 함수를 사용해 다른 프로세스에 시그널을 보내는 경우 3. 사용자가 ctrl+c 같은 인터럽트 키를 입력한 경우 ● 시그널 보내는 함수 - kill(pid, sig) : 시그널을 임의로 보내기 위해서는 kill함수를 사용한다. 매개변수로 시그널을 보낼 프로세스의 pid, 보낼 시그널 번호를 지정한다. pid가 0보다 큰 수 : pid로 지정한 프로세스에 시그널..

쓰레드(Thread) -Infinite
CS/시스템 프로그래밍2022. 6. 20. 19:46쓰레드(Thread) -Infinite

이전 글에서 프로그램 내에서 자식 프로세스를 만들어 여러가지 명령어를 처리하는 방법에 대해서 배웠는데, 이번 글에서는 새롭게 프로세스를 만들어 처리하지 않고 쓰레드를 사용하여 명령어를 처리하는 방법에 대해서 알아 보도록 합시다. ● 프로세스 vs 쓰레드 Process : 프로그램의 실행상태를 의미하며 프로세스 생성 시 상태정보 및 PCB를 생성합니다. Thread : 프로세스의 작업단위를 의미하며 쓰레드 생성 시 PCB는 공유를 하며, 오로지 스택만을 생성합니다. ● 쓰레드를 사용하는 이유 -> 보통 리눅스 시스템에서 서버 프로그램은 수많은 클라이언트의 요청에 대해 응답을 하기위해 여러 프로세스를 만들어 task를 처리합니다. 하지만 주어진 task가 경량화된 작업일 경우에는 쓰레드를 이용하여 한개의 프..

프로세스 생성과 실행 -Infinite
CS/시스템 프로그래밍2022. 6. 20. 17:39프로세스 생성과 실행 -Infinite

본 블로그에서는 프로세스를 생성하는 방법, 종료하는 방법, exec 함수군 및 동기화 방법에 대해서 알아보고자 합니다. ● 프로세스란 ? -> 프로세스는 현재 실행중인 프로그램을 의미합니다. 리눅스 시스템에서는 동시에 여러 프로세스가 실행이 되며, 이들은 실행, 수면(sleep), 실행대기 등의 규칙에 따라 여러 상태에 놓여있게 됩니다. 이러한 개별 프로세스들을 식별하기 위해서는 프로세스 ID(PID)값을 이용합니다. ● 프로세스의 구조 - 텍스트 영역 : 프로그램 실행 코드를 저장하는 영역으로 프로세스 실행 중에 크기가 변하지 않는 고정 영역에 속합니다. - 데이터 영역 : 프로그램에서 정의한 전역 변수를 저장하는 영역으로 데이터 영역 또한 고정 영역에 해당됩니다. - 힙 영역 : 프로그램 실행 중에 ..

image