컴퓨터 시스템이 동작할 때 하드웨어에서 반복되는 부분
-
입력장치 혹은 네트워크 어댑터를 통해서 컴퓨터에 무언가 처리 요청이 들어온다.
-
메모리에 있는 명령을 읽어 cpu에서 실행하고 그 결과 값을 다시 메모리의 다른 영역에 기록한다.
-
메모리의 데이터를 하드디스크나 ssd 등의 저장 장치에 기록 또는 네트워크를 통해 다른 컴퓨터에 전송하거나 디스플레이 등의 출력 장치를 통해 사람에게 결과값을 보여준다.
-
1번부터 반복해서 실행한다.
위와 같은 순서를 반복해서 사용자에게 필요한 하나의 기능으로 정리한 것을 프로그램이라고 한다.
-어플리케이션 : 오피스 프로그램, 카톡, 인스타 등등
-미들웨어 : 웹서버, 데이터 베이스 등
-os : 리눅스, ms 등
리눅스의 중요한 역할은 디바이스를 조작하는 일이다. 리눅스 같은 os가 없으면 여러 개의 프로세스가 각각 디바이스를 조작하는 코드를 작성해야 한다.
그래도 동작은 하지만 1. 모든 애플리케이션 개발자가 디바이스의 스펙을 상세히 알아야 디바이스를 조작할 수 있고, 2. 개별 개발이므로 비용이 커지고, 3. 멀티 프로세스가 동시에 디바이스를 조작할 경우에 예외의 동작이 발생할 수 있다.
이러한 단점 때문에 리눅스는 디바이스 드라이버라고하는 프로그램을 통해서 디바이스를 다룬다. 따라서 프로세스는 디바이스 드라이버를 통해서만 디바이스를 조작할 수 있다.
만약 디바이스 드라이버를 통하지 않고 디바이스에 접근하는것을 막기위해, 리눅스는 커널 모드와 유저모드를 두고있다. cpu가 커널 모드일때만 디바이스에 접근할 수 있다.
디바이스에 접근 하는 일 뿐만 아니라, 프로세스 관리 시스템, 프로세스 스케쥴링, 메모리 관리 시스템 모두 커널 모드에서 동작한다. 프로세스가 디바이스 드라이버를 포함한 커널이 제공하는 기능을 사용하려고 할때, 시스템 콜이라는 특수한 처리를 통해서 커널에 요청한다.
커널은 시스템에 탑재된 cpu나 메모리 등의 리소스를 관리하고 있으며 리소스의 일부를 시스템에 존재하는 각 프로세스에 적절히 분배한다.
프로세스 실행에 있어서 다양한 데이터가 메모리를 중심으로 cpu의 레지스터나 저장 장치 같은 기억장치 사이에 전송된다. 이러한 기억 장치는 크기, 가격, 전송속도 등에서 장단점이 있으며 기억장치 계층이라고 일컫는 계층구조를 구성하고 있다.
저장 장치에 보관된 데이터는 디바이스 드라이버에 직접 요청해서 접근할 수 있지만, 보통 좀 더 간단히 접근하기 위해 파일시스템이라고 하는 프로그램을 통해 접근한다.
컴퓨터 시스템은 저장장치가 반드시 필요하다. 시스템이 작동하려면 먼저, 저장장치로부터 os를 읽어야 한다. 거기에 추가로 시스템이 작동하면서 생성된 메모리상의 데이터는 전원이 꺼지면 손실되므로, 전원이 꺼지기 전에 그 내용을 저장 장치에 기록해 둬야 한다.
글 및 사진 출처 : 도서 실습과 그림으로 배우는 리눅스 구조 (한빛미디어)
'컴퓨터 기초 > 운영체제 이론' 카테고리의 다른 글
[실습과 그림으로 배우는 리눅스 구조] 3.프로세스 관리 (0) | 2020.06.06 |
---|---|
[실습과 그림으로 배우는 리눅스 구조] 2.사용자 모드로 구현되는 기능 (0) | 2020.06.05 |
[운영체제 정리] 6.CPU 스케쥴링 (0) | 2020.06.02 |
[운영체제 정리] 5.프로세스 관리 (0) | 2020.06.01 |
[운영체제 정리] 4.스레드 (0) | 2020.05.30 |