운영체제 독학의 목표 : 운영체제의 역사적 고찰, Abstraction의 이론적 이해
Abstraction에 대한 이야기를 안하고 갈 수는 없습니다. 자료구조, 알고리즘 과목은 물론이고 1학년에서 배우는 프로그래밍 언어관련 과목에서도 abstraction이라는 말은 빠짐없이 나옵니다.. 하지만 그 name value만큼 제대로 이해하는 분들은 그렇게 많지 않다고 생각합니다.(저도 마찬가지입니다.) 저는 여기서 제가 생각하는 abstraction의 정의부터 톺아보고자 합니다.(댓글로 많은 의견 남겨주세요!!! 저는 언제나 discusion과 질문을 환영하고 굉장히 중요하게 생각하는 사람입니다. 때로는 지엽적인 논쟁속에서도 훌륭한 아이디어가 나올 수 있습니다)
Abstraction = concept + 구현
뭐 길게 이야기해봤자 검색하면 충분히 나올 내용들이고 이 한줄로 끝내고 다음 내용으로 넘어가겠습니다.
본격적인 내용에 앞서서 참고한 자료들은 모두 기울임 처리하겠다는 것을 밝힙니다.. 제 생각과 다른분들의 소중한 저작물들을 구별하기 위한 것입니다.. 그리고 최대한 reference를 달기 위해 노력하겠습니다!
선수과목 : Data structure
Useful : Computer System, Computer Architeucture, Computer Networks
01.00. 개요
전기차! : 전기차는 컴퓨터라고 생각하면 되는데요. 엔진이 없고 바닥에 배터리가 있습니다. 기계공학의 꽃 상징이였는데 이제는 컴퓨터가 main이죠
linux 기반 운영체제 안드로이드 AUTO가 좋은 예시가 될 수 있습니다.
최신기술 : OTA(Over The Air)
그럼 발생할 수 있는 문제점에 무엇이 있을까요?
OS 오류, 보안문제 등
해결방안 : OS를 2개 띄우는 방식으로 해결(하이퍼바이저 가상화 기법)
가상화라는 단어를 기억하시죠!!!
01.01. 운영체제란?
- 하드웨어를 손쉡게 효율적으로 사용할 수 있는 Abstraction 제공
- 자원의 공유 및 분배를 위한 policy 결정
Abstraction은 concept + 구현이라고 말씀드린 바 있는데요. 그럼 실제 적용을 해보겠습니다.
CPU + process
Memory + address space
Disk + file
Network + port
바로 와닿지 않으시죠? 그럼 이해를 돕기 위해 질문을 한가지 하겠습니다. file은 어디에 있을까요? 저장되어 있나요? 우리가 그 부분을 정확히 짚을 수 있나요?
No 그게 abstraction입니다. HDD, Flash, network file, SAMBA.... 모르죠
SAMBA : 윈도우 운영체제를 사용하는 PC에서 UNIX, 리눅스 서버에 접 속해 파일이나 프린터를 공유하여 사용할 수 있도록 하는 소프트웨어
또한 policy 결정은 컴퓨터 구조, 알고리즘 과목에서도 배웠다시피 FIFO, LRU등 다양한 예가 있죠. 설계 결정이 필요하다는 것입니다. 대형컴퓨터, 휴대전화에 사용되는 policy가 다른 것처럼 말이죠
FIFO : 선입선출 먼저 CPU를 사용하겠다고 한 프로세스를 먼저 처리 함
LRU(Least Recently Used Algorithm) : 가장 오랫동안 참조되지 않 은 페이지를 교체하는 기법
01.02. Abstraction
Program은 컴퓨터를 실행시키기 위한 일련의 순차적을 작성된 명령어 모음입니다. 프로세스는 실행되고 있는 프로그램의 추상화지요. 즉, 프로세스는 프로그램이 실행되고 있는 상태를 나타낸다고 생각하면 되고 프로그램은 하나지만 프로세스는 여러개 있을 수 있습니다. 프로세스는 나중에 배우겠지만 PC(Program Counter), stack, data section등 을 포함하고 있습니다.
Address space는 process가 차지하는 메모리 공간입니다. 그럼 이게 왜 필요할까요?
Protection domain
바로 Protection domain때문입니다. 굉장히 중요해요! : 서로의 주소 공간을 침범할 수 없음.
남이 내꺼 가져다 쓰면 기분 나쁘잖아요... 그런 성질을 address space가 제공해줍니다.
port는 컴퓨터간에 메시지를 주고받을 수 있는 communication endpoint입니다. 예를 들면 웹 브라우저의 port는 80번이거나 8080번 이죠. 그 포트를 향해 데이터가 날아가는 것입니다. 내가 지금 사용하는 사용자가 프로세스가 뭔지 모르고 그냥 날아가는 거죠(메시지 패킷). 그 다음 그 노드 안에서 해당 프로세스를 찾아갑니다.
01.03. OS and Kernel
OS를 이야기하면서 커널을 빼놓을 수는 없는데요... 2가지 관점이 있다고 합니다
- OS = Kernel
- OS = Kernel + Windows system + library
Kernel
커널은 운영체제의 핵심부분으로, 자원할당, 하드웨어 인터페이스, 보안 등을 담당합니다. 다만, 커널과 OS가 동의어라고생각하진 않습니다. 커널에 대한 자세한 내용은 다음에 이야기할 기회가 있을 것입니다.
최종적으로 OS가 어디쯤에 위치하고 있을까요? 감은 아래의 그림으로 확실히 잡으실 수 있을겁니다. 관계에 대한 좋은 그림이 있네요! 살펴보고 가시죠
이번시간에는 운영체제라는 것에 대한 소개? 정도를 하는 시간이였습니다. 운영체제가 쓰이지 않는 곳은 어딜까요? PC, TV, 5G장비, IoT, 클라우드, Bank.... 없네요...ㅎㅎㅎ 컴퓨터학과 학생으로 운영체제라는 과목을 배울 명확한 이유가 추가되었네요... 열심히 배워봅시다
'학부공부 > OS_운영체제' 카테고리의 다른 글
05. Multics vs Unix [Interesting topic to study] (0) | 2021.11.02 |
---|---|
04. 운영체제 구조(2) (0) | 2021.11.02 |
03. 운영체제 구조(1) (0) | 2021.11.01 |
02. 운영체제 역사 (0) | 2021.10.24 |
00. 운영체제 STUDY 시작 (2) | 2021.10.20 |
댓글