운영체제와 커널(Kernel)
• 넓은 의미에서의 운영체제
– 윈도우, 리눅스, 맥 OS과 같이 널리 일반적으로 사용
– 운영체제의 핵심 기능을 비롯하여 시스템 프로그램, 라이브러리, 서비스, GUI 등을 포함
• 좁은 의미에서의 운영체제
– CS 학문에서의 운영체제는 커널을 말함
– 프로그램들을 구동하고 컴퓨터를 제어하는 프로그램
• 커널이란(Kernel)–하드웨어를 제어하고 중재하는 역할
– 하드웨어에 대한 추상화 제공
– 시스템 자원을 적절히 배분하는 역할
– 사용자, 프로그램, 운영체제를 보호하는 역할
– 기타 등등
이중모드와 시스템 호출
• 이중모드
- 프로그램은 컴퓨터 자원에 직접 접근할 수 없으며, 운영체제를 통해서 대신 접근할 수 있음
- CPU가 명령어를 실행하는 모드를 사용자 모드와 커널모드로 나누어 실행
•사용자 모드: 운영체제 서비스를 제공받을 수 없음
•커널 모드
* 운영체제 서비스를 제공받음
* 자원 접근이 자유로움
* 그러므로, 커널모드에서의 실행은 신중해야 함(보호 필요)
*시스템 호출을 통해 모드 전환 가능
• 시스템 호출
• 사용자 모드와 커널모드 사이의 인터페이스 역할
– 커널이 하드웨어와 관련된 일을 처리하여 프로그래밍을 더욱 쉽게 함
– 커널이 자원 접근을 통제하며 시스템 호출을 통해서만 가능하므로 안전한 프로그래밍이 가능함
– 운영체제의 기능이 변경되어도 시스템 호출은 동일하므로 프로그램의 이식성이 높아짐
시스템 호출의 예
• 프로세스 제어 – 실행, 종료, 대기, 메모리 할당 등
• 파일 관리 – 파일 생성, 삭제, 열기, 닫기 등
• 장치 관리 – 장치 사용 요청 및 해제, 읽기, 쓰기 등
• 정보 관리 – 날짜, 시간, 프로세스 정보, 파일 정보 등
• 통신 – 통신 채널 생성, 메시지 전송/수신 등
모드 전환
• 사용자 모드 -> 커널 모드 전환
– 외부 인터럽트
• 타이머, I/O 장치, 네트워크 카드, 키보드, 마우스 등
– 내부 인터럽트(트랩)
• 의도적 발생: 시스템 호출을 통해서 커널 모드로 진입
• 비의도적 발생: 장애/예외 발생시 커널 모드로 진입
– 예: 0으로 나누는 경우
• 커널 모드 -> 사용자 모드 전환
– 새로운 프로세스가 생성된 이후
– 인터럽트, 예외, 시스템호출에 대한 처리가 끝난 이후
– 문맥 교환이 일어난 이후
인터럽트와 트랩
•인터럽트: 하드웨어에 의해 발생
•트랩: 소프트웨어에 의해 발생
프로세스
• 프로세스
– 메모리에 탑재되어 CPU에서 실행되고 있는 프로그램
– 즉, 프로그램의 인스턴스(동작 중인 상태)
• 프로세스의 구조
– 메모리
• 실행 가능한 이미지: 프로그램 코드와 전역 변수
• 스택: 지역 변수
• 힙: 포인터 변수
– 레지스터
• 프로그램 카운터(Program counter): 다음에 실행되어야 할 명령어의 위치
• 스택 포인터(Stack pointer): 함수에 대한 정보를 관리
'KNU Freshman > 컴퓨터학개론' 카테고리의 다른 글
(8) 가상 메모리 (0) | 2024.04.16 |
---|---|
(7) 운영체제에서의 CPU 스케줄링 (1) | 2024.04.15 |
(6)-1 컴퓨터 구조와 운영체제 (0) | 2024.04.15 |
(5) 프로그램의 번역 (0) | 2024.04.11 |
(4) 프로그램 구조 (0) | 2024.04.11 |