운영체제와 컴퓨터
by Frinee운영체제(OS, Operating System)
컴퓨터 시스템의 하드웨어와 소프트웨어를 관리하고 사용자와 컴퓨터 간의 상호작용을 가능하게 하는 소프트웨어
※ 펌웨어 (Firmware)
: 하드웨어 장치의 동작을 제어하기 위해 하드웨어 내부에 설치된 소프트웨어, 하드웨어와 소프트웨어의 중간 역할을 하며 하드웨어의 특정 기능을 제어하거나 명령을 수행하게 만든다.
1. 운영체제의 역할
- CPU 스케줄링과 프로세스 관리: CPU 소유권을 어떤 프로세스에 할당할지, 프로세스의 생성과 삭제, 자원 할당 및 반환을 관리한다.
- 메모리 관리: 한정된 메모리를 어떤 프로세스에 얼마큼 할당해야 하는지를 관리한다.
- 디스크 파일 관리: 디스크 파일을 어떠한 방법으로 보관할지 관리한다.
- I/O 디바이스 관리: I/O 디바이스들인 마우스, 키보드와 컴퓨터 간에 데이터를 주고받는 것을 관리한다.
2. 운영체제의 구조
GUI (Graphical User Interface)
: 사용자가 전자장치와 상호작용할 수 있도록 하는 사용자 인터페이스의 한 형태, 단순 명령어 창이 아닌 아이콘을 마우스로 클릭하는 단순한 동작으로 컴퓨터와 상호 작용할 수 있도록 한다.
CUI (Character User Interface)
: 문자를 사용해 사용자와 컴퓨터가 상호작용하는 인터페이스, 명령어를 포함하여 메뉴, 텍스트 기반 인터페이스를 포함하는 개념이다. 명령어만으로 상호작용하는 인터페이스를 CLI(Command Line Interface)라 한다.
드라이버
: 하드웨어를 제어하기 위한 소프트웨어
3. 시스템 콜 (System Call)
- 응용 프로그램이 운영체제의 커널 기능을 사용할 수 있도록 도와주는 인터페이스
- 애플리케이션이 직접 하드웨어 자원에 접근할 수 없기 때문에 시스템 콜을 통해 커널에 요청을 전달하여 커널이 해당 작업을 수행하게 된다.
- 이 과정을 통해 컴퓨터 자원에 대한 직접 접근을 차단할 수 있고 프로그램을 보호할 수 있다.
커널 기능
: 운영체제의 핵심 부분이자 시스템콜 인터페이스를 제공하며 보안, 메모리, 프로세스, 파일시스템, I/O 디바이스, I/O 요청관리 등 운영체제의 중추적인 역할을 한다.
발생과정
- 사용자 모드(User mode): 응용 프로그램이 실행되다가 운영체제의 기능이 필요할 때 시스템 콜을 호출한다. (ex. 파일 읽기 기능)
- 모드 전환: 시스템 콜이 호출되면 CPU는 사용자 모드에서 커널 모드로 전환된다.
- 커널 처리: 커널 모드로 전환된 후, 운영체제가 직접 시스템 콜을 처리한다. 파일을 읽고 프로세스를 생성하는 등의 작업이 이뤄지는 곳이다.
- 결과 반환 및 모드 전환: 커널이 요청된 작업을 처리하고 결과를 반환하면 CPU는 다시 커널 모드에서 사용자 모드로 전환되고, 프로그램은 시스템 콜의 결과를 받아 다음 작업을 이어간다.
유저 모드 (User mode)
: 일반 애플리케이션이 실행되는 모드로, 제한된 권한을 갖고 있고 컴퓨터 자원에 직접 접근할 수 없다.
커널 모드 (Kernel mode)
: 운영체제의 핵심 부분인 커널이 실행되는 모드로, 시스템의 모든 자원에 대한 접근 권한을 가진다.
mode bit
: 1 (유저 모드) 또는 0 (커널 모드)의 값을 가진 플래그 변수, 유저 모드와 커널 모드를 구분하는 역할
4. 컴퓨터의 기능적 요소
컴퓨터의 기능적 요소는 CPU, DMA 컨트롤러, 메모리, 타이머, 디바이스 컨트롤러 등으로 이루어져 있다.
- CPU (Central Processing Unit)
- I/O 디바이스가 메모리에 직접 접근할 수 있도록 하는 하드웨어 장치
- CPU 부하를 막아주며 데이터 전송 속도를 높여 성능을 향상한다.
- DMA 컨트롤러
- I/O 디바이스가 메모리에 직접 접근할 수 있도록 하는 하드웨어 장치
- CPU 부하를 막아주며 데이터 전송 속도를 높여 성능을 향상한다.
- 메모리
- 전자회로에서 데이터나 상태, 명령어 등을 기록하여 저장하는 장치
- 보통 RAM (Random Access Memory)를 메모리라 한다.
- 타이머
- 시스템의 시간 관리를 담당하며 주기적인 작업을 스케줄링한다.
- 운영체제가 프로세스의 시간 할당을 조정하고 이벤트 발생을 관리하는 데 사용된다.
- 디바이스 컨트롤러
- 주변 장치와 CPU 간의 데이터 통신을 관리하는 장치로, 각 장치의 특성에 맞게 명령을 처리한다.
- 그래픽카드 컨트롤러, 네트워크 카드 컨트롤러 등이 존재한다.
5. CPU (Central Processing Unit)
- 산술논리연산장치, 제어장치, 레지스터로 구성되어 있는 컴퓨터 장치
- 모든 데이터 처리와 연산을 수행하며 명령어를 해석하고 실행한다.
- 제어장치 (Control Unit)
- 프로세스 조작을 지시하는 부품
- 입출력장치 간 통신을 제어하고 명령어들을 읽고 해석하며 데이터 처리를 위한 순서를 결정
- 레지스터 (Register)
- CPU 안에 있는 매우 빠른 임시기억장치
- CPU와 직접 연결되어 있어 연산속도가 메모리보다 수십 ~ 수백 배 빠르다.
- CPU가 데이터를 저장할 때, 항상 레지스터를 거쳐 데이터를 전달한다.
- 산술논리연산장치 (ALU, Arithmetic Logic Unit)
- 덧셈, 뺄셈 같은 두 숫자의 산술 연산과 배타적 논리합, 논리곱(XOR, AND, OR 등) 같은 논리 연산을 계산하는 디지털 회로
CPU 연산처리 과정
- 명령어 인출 (Fetch): 제어장치가 메모리에서 실행할 명령어를 가져온다.
- 명령어 해석 (Decode): 제어장치가 명령어를 해석하여 필요한 레지스터와 메모리 주소를 파악한다. 이후 ALU에게 명령한다.
- 연산 수행 (Execute): 산술논리연산장치에서 연산을 실행하여 누산기(Accumulator)나 다른 레지스터에 저장한다.
- 결과 저장 (Store): 제어장치가 연산 결과를 레지스터에서 메모리의 지정된 주소로 저장한다.
- 인터럽트 처리 (Optional): 어떤 신호가 들어왔을 때, CPU의 연산을 잠깐 정지시키는 것을 말한다. 처리가 완료되면 다시 원래 작업으로 복귀한다.
- 하드웨어 인터럽트: 키보드나 마우스 등의 IO 디바이스에서 발생하는 인터럽트
- 소프트웨어 인터럽트: 트랩(Trap)이라고 하며, 프로세스 오류 등으로 프로세스가 시스템콜을 호출할 때 발동한다.
블로그의 정보
프리니의 코드저장소
Frinee