[리눅스 구조] 컴퓨터 시스템의 개요 알아보기
컴퓨터 시스템의 하드웨어 구성
1. 입력장치 혹은 네트워크 어댑터를 통해서 컴퓨터에 무언가 처리 요청이 들어옵니다.
2. 메모리에 있는 명령어를 읽어 CPU에서 실행하고 그 결과값을 다시 메모리에 다른 영역에 기록합니다.
3. 메모리의 데이터를 하드디스트나 SSD 등의 저장장치에 기록 또는 네트워크를 통해 다른 컴퓨터에 전송하거나 디스플레이등의 출력장치를 통해 다른 사람에게 결과값을 보여줍니다.
이 순서를 반복해서 사용자에게 하나의 처리 기능으로 정리한것을 프로그램 이라고 한다.
프로그램의 종류
1. 애플리케이션 : 사용자가 직접 사용, 컴퓨터 오피스 프로그램, 스마트폰이나 태블릿에 있는 앱
2. 미들웨어 : 여러가지 애플리케이션이 공동으로 사용하는 처리를 묶어서 애플리케이션의 실행을 도와줌 웹 서버, 데이터 베이스
3. OS (운영체제) 하드웨어를 직접 조작하여 애플리케이션이나 미들웨어어의 실행에 필요한 기능을 제공
리눅스, MS윈도우, OSX 등
일반적으로 OS는 여러가지 프로그램을 프로세스라고 하는 단위로 실행
리눅스의 특징
리눅스는 디바이스 드라이버라는 프로그램을 통해 디바이스를 다룸. 디바이스 드라이버를 통해서만 디바이스를 조작할수 있다! 리눅스는 디바이스의 종류가 같으면 같은 인터페이스로 조작하도록 되어있다.
! 디바이스 드라이버를 통해 접근하지 않는다면 멀티프로세스가 디바이스를 조작하려고 하는 문제가 발생한다.
따라서 리눅스는 cpu에 있는 기능을 이용하여 프로세스가 직접 하드웨어에 접근하는것을 차단한다.
CPU모드 : 커널모드로 동작할 때만 디바이스에 접근할 수 있다. 디바이스는 커널 모드로 동작하고 프로세스는 사용자 모드로 동작합니다.
커널모드 : 모든 자원에 접근, 명령 할수 있습니다. 자원의 종류는: 드라이버, 메모리, CPU
- 프로세스 관리 시스템
- 프로세스 스케줄링
- 메모리 관리시스템
프로세스는 시스템 콜이라고 하는 특수한 처리를 통해 커널에 요청합니다.
커널은 시스템에 탑재된 CPU나 메모리 등의 리소스를 관리하고 있으며, 리소스의 일부를 시스템에 존재하는 각 프로세스에 적절히 분배합니다.
사용자모드(유저모드) : 사용자가 접근할수 있는 영역을 제한적으로 두고 프로그램의 자원에 함부로 침범하지 못하게 하는 모드, 유저모드에서 코드를 작성하고 프로세스를 실행하는 등의 행동을 할 수 있다.
참고서적: 실습과 그림으로 배우는 리눅스 구조