리눅스 커널 디자인의 기술을 읽으면서 책 내용 정리하기 (티스토리부터 이전 된 자료 입니다.)
프로세스 0은 부모 프로세스 역활을 한다. 이 프로세스의 첫 번째 임무는 fork() 함수를 실행시켜서 첫 번째 자식 프로세스인 프로세스 1을 생성하는 것이다. 이것을 부모 - 자식 관계를 이용한 프로세스 생성 메커니즘으로 생성된 최초의 프로세스다. 모든 프로세스는 이 메커니즘을 기초로 부모 프로세스를 이용해서 만들어진다.
리눅스 0.11의 프로세스 간 스케줄링 메커니즘에서 프로세스 전환이 일어나는 두가지 상황이 있다.
첫 번째는 프로세스에 부여된 시간을 다 소진했을 때이다.
프로세스가 생성 될 때, 프로세스는 제한된 타임 슬라이스를 부여 받는다. 항상 부여된 시간만 동작할 수 있도록 하고 있다. 타임 슬라이스가 0으로 줄 들면 프로세스에게 부여된 시간을 다 쓴것을 의미하고 다른 프로세스가 실행되도록 전환된다. 이방식이 멀티 프로세스를 구현하는 방식이다.
두 번째는 프로세스의 실행이 중단될 때이다.
프로세스가 주변 장치나 다른 프로그램의 데이터를 기다리거나 다른 프로세스가 종료될 때까지 기다려야하는 경우다. 비록 부여된 타임 슬라이스가 남아있다고 해도 프로세스를 계속 실행해야 할 필요가 없다. 타임슬라이스를 다 소진해서 다른 프로세스로 전환될 때까지 타임 인터럽트를 기다리게 되면 시간 낭비가 되기 때문에 이런 때는 프로세스 전환이 바로 이루어진다.
OS에서 파일 시스템은 크게 두개로 나눌 수 있다. 하나는 OS커널의 것이고 다른 하나는 하드디스크,플로피 디스크, 램디스크에 있는 것이다.
파일 시스템은 파일을 관리하기 위해서 만들어졌다. 이때 i-node을 이용해 파일 시스템을 관리한다.
i-node란?
전통적인 유닉스 계통 파일 시스템에서 사용하는 자료구조이다.
모든 파일의 i-node는 결국 트리 구조로 연결된다. 파일 시스템은 반드시 다른 파일 시스템과 연결이 되어야 한다. 이런 규칙에 따라 다른 파일 시스템에 마운트하려면 연결할 다른 파일 시스템이 있어야 한다.
루트 파일 시스템은 특별한 파일 시스템이다. 루트 파일 시스템을 담고 있는 디바이스를 루트 디바이스라고 한다.