유닉스 (3) 썸네일형 리스트형 fork()란 무엇인가? fork() 함수는 유닉스 운영체제의 프로세스 생성 함수이다. 한 프로그램 안에서 fork() 함수를 사용하면 그 프로그램과 똑같은 프로세스가 만들어진다. 이 fork() 함수를 호출한 프로세스를 parent 프로세스라고 하고, 이 fork() 함수에 의해 만들어진 프로세스를 child process라고 한다. 이 parent process와 child process는 동일한 내용의 코드이다. 심지어 PC(Program Counter) 또한 똑같이 복사되기 때문에 parent process와 child process는 fork() 함수를 호출하는 순간 프로그램 내에서 같은 명령어 부터 수행하게 된다. 이때, 프로그램 안에서 if문을 사용하여 부모 프로세스인지 자식 프로세스인지 구분하여 원하는 방향으로 프.. 백그라운드 프로세스 & 포그라운드 프로세스 유닉스에서 키보드로부터 입력받을 수 있는 프로세스는 한 순간에 하나만 가능하다. 그 입력 가능한 상태에 있는 프로세스를 포그라운드 프로세스라 하고, 나머지 프로세스를 백그라운드 프로세스라고 한다. 예를 들어 윈도우 환경에서 웹브라우저를 여러개 띄워 놓고(여러 프로세스) 검색을 하려고 할때 한 번에 하나의 웹브라우저에만 키보드로 입력받을 수 있는 것과 같다. 유닉스환경에서 예를 들자면 키보드 입력 대기상태에는 bash shell 프로세스가 foreground process이다. 이 때 sleep 명령어를 사용하면 bash shell 프로세스는 background process로 변환되는 것이다. sleep 함수가 종료되면 다시 foreground process가 되어 키보드 입력을 받을 수 있는 상태가 된다. HAL (Hardware Abstraction Layer) HAL (Hardware Abstraction Layer) (하드웨어 추상화 계층) 은 무엇인가? HAL은 유닉스 운영체제에서 커널과 하드웨어 사이의 인터페이스를 제공하는 소프트웨어 집합이다. 만약 우리가 각각 다른 구조를 가진 하드웨어들의 운영체제를 만들때 일일이 각 하드웨어 마다 따로 운영체제를 만들어야 하려면 많은 시간과 비용이 들 것이다. 이를 피하기 위해서 고안된 소프트웨어 집합이 HAL이다. HAL을 이용하면 우리가 여러 하드웨어(스마트폰, PC 등..)의 리눅스 운영체제를 만든다고 할때 운영체제를 처음부터 끝까지 전부 수정할 필요 없이 하드웨어에 의존적인 코드 부분만 수정하면 된다. 자주 쓰이는 하드웨어 의존 코드들을 인터페이스(Function)으로 묶어 함수 이름은 그대로 두고, 관련 하드.. 이전 1 다음