시스템 프로그램:
OS와 HW의 관리 및 제어를 위해 작성되는 프로그램들이다.
커널: 운영 체제의 핵심 부분으로, 하드웨어 자원 관리, 프로세스 스케줄링, 메모리 관리, 입출력 관리 등 다양한 시스템 레벨 작업을 처리합니다.
장치 드라이버: 하드웨어 장치와 커널 간의 통신을 담당하여, 운영 체제에서 하드웨어를 제어할 수 있도록 도와줍니다. 예를 들어 그래픽 카드, 프린터, 디스크 드라이브의 드라이버가 있습니다.
시스템 유틸리티: 운영 체제의 기능을 보조하는 도구로, 파일 관리, 프로세스 모니터링, 시스템 설정 변경 등을 수행합니다. 예를 들어 파일 탐색기, 작업 관리자 등이 있습니다.
부트 로더: 컴퓨터 부팅 과정에서 운영 체제를 메모리에 로드하고 실행하기 위한 프로그램입니다. 부트로더는 컴퓨터의 부팅 가능한 디스크나 네트워크로부터 운영 체제를 로드합니다.
네트워크 스택: 네트워크 프로토콜을 구현하여 데이터 통신을 관리합니다. TCP/IP 스택은 네트워크 연결, 데이터 전송, 패킷 라우팅 등을 처리합니다.
쉘(Shell): 사용자와 운영 체제 간의 인터페이스로, 사용자가 명령어를 입력하고 운영 체제의 기능을 실행할 수 있게 해줍니다.
시스템 보안 프로그램: 사용자 인증, 접근 제어, 방화벽 등을 관리하여 시스템 보안을 강화합니다.
시스템 모니터링 도구: 시스템 자원 사용량, 성능, 로그 등을 모니터링하고 분석하여 시스템 상태를 파악합니다.
키보드 입력 처리 과정
키보드 입력: 사용자가 키보드를 누르면, 키보드의 하드웨어가 해당 키에 대응되는 신호를 생성합니다.
키보드 장치 컨트롤러: 키보드의 하드웨어 신호는 키보드 장치 컨트롤러로 전달됩니다. 이 컨트롤러는 키보드에서 발생하는 이벤트와 데이터를 처리하며, 데이터는 로컬 버퍼 저장소에 저장됩니다.
운영 체제의 입력 처리: 운영 체제는 정해진 시간 간격으로 키보드 장치 컨트롤러를 폴링하여 버퍼에 있는 데이터를 가져옵니다. 가져온 데이터는 현재 활성화된 프로세스의 입력 버퍼(표준입력버퍼, readlin버퍼 등)로 복사됩니다.
프로세스의 응용 프로그램: 입력 버퍼에 복사된 데이터는 현재 실행 중인 응용 프로그램에서 읽을 수 있습니다. 응용 프로그램은 이를 이용하여 사용자의 입력을 처리하고 필요한 작업을 수행할 수 있습니다.