일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- BFS
- HAVE A GOOD DAY
- 수학
- Java 환경 설정
- amazon
- 우유아야
- 아자아자 화이팅
- I am Korean
- Hamming weight
- 텐션 업 10기 화이팅
- 우유가 옆으로 넘어지면 아야
- 코로나 싫어요
- 자고 싶다
- SSAFY IM/A
- have a nice day
- 우유가옆으로넘어지면아야
- 네트워크
- Have a good day :)
- 자료구조
- SeongSeobDang
- Have a nice day.
- 텐션 업 10기!
- SSAFY 화이팅
- 모르고리즘
- DP
- SSAFY 10기 화이팅
- LeetCode #릿코드 #좋은 하루 되세요 #Have a nice day
- DFS
- SSAFY 테스트
- Today
- Total
Hope Everyone Is Happy
1. 운영체제의 역할과 구조 본문
본 게시글은 책 : 면접을 위한 CS 전공지식 노트 (출판사 : 길벗, 주홍철 지음) 을 참조하여 작성하였습니다. + 구글링
◆ 운영체제 (OS, Operating System)
- 사용자가 컴퓨터를 쉽게 다루게 해주는 인터페이스(?)
- 한정된 메모리나 시스템 자원을 효율적으로 분배
- 운영체저와 유사하지만 소프트웨어를 추가로 설치할 수 없는 것을 펌웨어(FirmWare)로 정의
- 일반적으로 웹 브라우저, 워드, 게임 등의 응용프로그램 을 실행할 때는 사용자 영역의 메모리에 존재
- 운영체제는 커널 영역이라는 메모리에 저장되며 사용자 영역의 프로그램을 관리
◆ 운영 체제 역할
- 운영체제의 역할은 크게 4가지 존재
- CPU 스케줄링과 프로세스(Process) 관리
: CPU 소유권을 어떤 프로세스에 할당할지, 프로세스의 생성과 삭제, 자원(Resource) 할당 및 반환을 관리
1. 프로그램들은 사용자 영역이라는 메모리 공간에 저장된 상태
2. 메모리들은 실행되기 위해 CPU 필요 (일단 제어장치에서 메모리를 읽자고 요청해야 시작)
3. 결과적으로, 여러 프로세스가 실행 될 때 누가 먼저 CPU를 사용할지, 얼마나 오래 유지할지 관리 필요
ex) 윈도우에서 작업관리자의 프로세스 항목들을 보면 알아서 잘 관리되는 것 확인 가넝
- 메모리 관리
: 한정된 메모리를 어떤 프로세스에 얼만큼 할당해야 하는지 관리
1. 운영체제는 사용자 영역에서 프로그램이 실행 될 때 원하는 메모리 주소에 적재
2. 한정된 메모리 상황에서 사용자 영역 내 프로그램 실행 시 관리 필요
- 디스크 파일 관리
: 한정된 메모리를 어떤 프로세스에 얼만큼 할당해야 하는지 관리
- I/O 디바이스 관리
: I/O 디바이스들인 마우스, 키보드와 컴퓨터 간에 데이터를 주고 받는 것은 관리
◆ 운영체제의 구조
- 운영체제의 구조는 아래 그림과 동일
- 유저 프로그램이 맨위에 존재, 그 다음에 GUI, 시스템콜, 커널, 드라이버, 하드웨어로 구성된 구조
- GUI, 시스템콜, 커널, 드라이버 부분이 운영체제에 해당
- GUI가 없고 CUI만 있는 리눅스 서버도 존재
- GUI : 사용자가 전자장치와 상호 작용할 수 있도록 하는 사용자 인터페이스의 한 형태
: 단순 명령어 창이 아닌 아이콘을 마우스로 클릭하는 단순한 동작으로 컴퓨터와 상호 작용 가능
- 드라이버 : 하드웨어를 제어하기 위한 소프트웨어
- CUI : 그래픽이 아닌 명령어로 처리하는 인터페이스
- 시스템콜
: 운영체제가 커널에 접근하기 위한 인터페이스
: 유저 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출할 때 사용
: 유저 프로그램이 I/O 요청 으로 트랩을 발동하면, 올바른 I/O 요청인지 확인
: 확인 완료 후, 유저 모드가 시스템콜을 통해 커널모드로 변환 되어 실행
ex) fs.readFile()이라는 파일 시스템의 파일을 읽는 함수를 실행하면,
1. 유저 모드에서 파일을 읽지 않고 커널모드로 들어감
2. 파일을 읽고 다시 유저모드로 돌아감
3. 그 뒤에 있는 유저 프로그램의 로직을 수행
위 과정을 통해 컴퓨터 자원에 대한 직접 접근을 차단할 수 있고 프로그램을 다른 프로그램으로부터 보호
- 시스템콜, 커널, 운영체제 관계
: 프로세스나 스레드에서 운영체제로 어떠한 요청을 할 때 시스템콜이라는 인터페이스와 커널을 거쳐 OS에 전달
- 시스템콜은 하나의 추상화 계층
- modelbit
: 시스템콜이 작동될 때 modelbit을 참고해서 유저 모드와 커널 모드를 구분
: 카메라, 키보드 등 I/O 디바이스는 운영체제를 통해서 작동해야 함
: 시스템콜을 호출하여 modelbit을 0으로 바꾸어 커널 모드로 변경 후 I/O 디바이스 자원을 이용한 로직 수행
: 완료 후 0에서 1로 바꾸어 유저 모드로 변경, 이후 로직을 수행
ex) 카메라 자원 사용 과정
위의 글과 관련하여 추가적인 내용이나 피드백은 언제나 환영입니다 :)