세상에는 다양한 종류의 컴퓨터 시스템이 넘쳐나고 있다. 컴퓨터, 스마트폰, 태블릿 등... 이러한 컴퓨터 시스템을 기반으로 동작하는 디바이스들은 대게, 다음과 같은 순서로 동작한다.
1. 사용자 입력 창치 혹은 네트워크 어댑터를 통해 무언가 처리 요청
2. 메모리에 있는 명령을 읽어 CPU에서 실행하고 그 결과값을 다시 메모리에 기록
3. 메모리의 데이터를 하드디스크나 SSD 등의 저장 장치에 기록 또는 네트워크를 통해
다른 컴퓨터에 전송하거나 디스플레이 등의 출력장치로 결과값 도출
4. 1부터 반복해서 실행
위 순서를 반복하여 하나의 기능으로 정리한 것이 프로그램이다.
일반적으로 OS(멀티 프로세스 지원)는 프로그램을 프로세스 단위로 실행하며 하나의 프로그램은 하나 혹은 여럿의 프로세스로 구성된다. 이러한, OS가 없을 시 프로세스 별 조작 코드를 작성해 주어야 한다.
<OS가 없을 시 단점>
➡️ 따라서 리눅스는 디바이스 드라이버를 사용 이를 통해서만 디바이스를 다룬다.
⍩ 이러한 룰을 어길 시 멀티 프로세스가 동시에 디바이스를 조작 시도하는 상황이 발생
⍩ 리눅스는 CPU에 있는 기능을 이용, 프로세스가 직접 하드웨어에 접근을 차단
➡️ 리눅스는 디바이스의 종류가 같으면 동일 인터페이스를 사용한다.
커널모드, 사용자 모드로 나뉨
커널모드
1. OS의 핵심 부분이 되는 처리를 모아 담당하는 프로그램
2. 시스템에 탑재된 CPU, 메모리 등 리소스를 관리
3. 리소스 일부를 시스템에 존재하는 각 프로세스에 분배
디바이스에 접근 가능 / 프로세스 관리 시스템 / 프로세스 스케줄링 / 메모리 관리 시스템
사용자 모드
프로세스 동작 가능
프로세스가 디바이스 드라이버를 포함한 커널이 제공하는 기능을 사용하려 할때 커널에 요청하는 방식이다.
프로세스 와 커널과의 인터페이스 역할을 가진다.