C 9. 운영체제란
운영체제는 실행할프로그램에 필요한 자원을 할당하고 프로그램이 잘 싱행되도록 돕는 특별한 프로그램이다.
컴퓨터가 부팅될때 메모리내 커널영역이라는 공간에 따로 존재하면서 실행된다.
커널: 운영체제의 핵심 기능을 담당커널영역을 제외한 나머지 영역, 사용자가 이용하는 응용프로그램이 있는 영역을 사용자 영역, 사용자 인터페이스라고 한다.
사용자 인터페이스
1) 그래픽 유저 인터페이스
2) 커멘드 라인 인터페이스
개발자는 운영체제와의 대화를 통해 하드웨어와 프로그램을 더 깊이 이해하고 문제해결의 실마리를 찾을수 있다.
대표적인 운영체제 서비스로 프로세스 관리, 자원 접근및 할당, 파일 시스템관리가 있다.
운영체제는 사용자가 직접 접근하는 것을 방지하여 자원을 보호 한다. 접근 하는 방법은 이중모드로 구현된다.
이중모드
1) 사용자모드: 운영체제 서비스를 제공 받을수 없는 실행모드, 따라서 사용자 모드로 실행되는 프로그램이 접근을 하려면 운영체제에 요청을 보내 커널모드로 전환되어야 한다.이떄 요청을 시스템 호출이라고 한다.
2) 커널모드: 제공 받을수 있는 실행모드
시스템 호출: 소프트웨어적인 인터럽트
종류: 프로세스관리, 파일 관리, 디렉터리관리, 파일시스템 관리
이중 모드는 커널과 사용자 두가지를 지원하는 실행모드이지만, 가상모선을 통한 가상화를 지원하는 현대에선 두가지 이상 모드를 지원한다.
C 10. 프로세스와 스레드
실행중인 프로그램을 프로세스라고 한다. 사용자가 보는 앞에서 실행되는 포그라운드 프로세스와 보지 못하는 뒤에서 시리행되는 프로세스를 백그라운드 프로세스라고 한다. 이러한 프로세스를 유닉스에선 데몬이라고 부르고 원도우에선 서비스라고 부른다.
운영체제는 프로세스 제어블록을 통해 여러 프로세스를 관리한다. 프로세스 간에 실행을 전환 하는것을 문맥 교환이라고 한다.
프로세스 베어 블록은 프로세스 관련된 정보를 저장하는 자료구조다. 상품 태그 같은것, 흑히 PCB라고 줄여부름
문맥: 프로세스 수행을 하기 위해 기억해야할 정보
문맥교환: 기존 프로세스의 문맥을 PCB에 백업하고 새로운 프로세스를 실행하기 위해 문맥을 PCB로 부터 복구하여 새로운 프로세스를 실행하는것프로세스 사용자영역엔 크게 코드영역, 데이터영역, 스택영역, 힙영역으로 나눠어 배치된다.
프로세스 상태의 종류
1) 생성: PCB를 할당 받은 상태
2) 준비
3) 실행: CPU를 할당받아 실행중인 상태
4) 대기: 입출력장치의 작업을 기다리는 상태
5) 종료
프로세스가 다른 프로세스를 생성한 경우 생성한것을 부모 프로세스 생선된것을 자식 프로세스 라고 부른다.
많은 운영체제는 프로세스를 낳는 계층 구조로 관리한다.
C 10 - 3. 스레드
스레드는 프로세스를 구성하는 실행의 단위이다. 또한 하나의 프로세스에 여러 스레드가 있을수 있다. 이때 여러 프로세를 동시에 실행하는 것을 멀티프로세스, 그리고 여러 스레드로 프로세스를 동시에 실행하는 것을 멀티스레드 하고 한다.
여러 프로세스를 실행하는것도 여러 스레드 실행은 뭐가 다를까?
두개는 차이가 있는데 프로세스끼리는 기본적으로 자원을 공유하지않지만 스레드는 공유한다. 따라거 전자는 독립적으로 각각 실행되고 후자는 자원을 공유하기에 협력과 통신에 유리하다.
하지만 프로세스끼리 자원공유가 아예 불가능한것은 아님
프로세스 간 통신(IPC)을 하거나 공유 메모리를 사용하는등 까다롭긴 하지만 가능은함
'소프트웨어 개발' 카테고리의 다른 글
개발책 - 혼자 공부하는 컴퓨터구조+운영체제 (15장~끝) (0) | 2024.03.17 |
---|---|
개발책 - 혼자 공부하는 컴퓨터구조+운영체제 (11-14장) (0) | 2024.02.17 |
개발책 - 혼자 공부하는 컴퓨터구조+운영체제 (4-8장) (1) | 2024.01.21 |
개발책 - 혼자 공부하는 컴퓨터구조+운영체제 (1-3장) (0) | 2024.01.21 |
운영체제 - 종류 (Windows,OS,Linux) (0) | 2024.01.07 |