이번 학기에는 운영체제(OS) 수업을 수강 중인데요.
사실 오늘이 중간고사 이틀 전입니다. 잠깐 머리도 식힐 겸, 지금까지 배운 내용을 블로그에 정리해보려 합니다.
앞으로 [운영체제] 관련 포스팅들은 종강 후에도 꼭 기억해두고 싶은 essential한 개념들 위주로 담아볼 예정이니, 저처럼 공부하시는 분들께 도움이 된다면 정말 기쁠 것 같아요!
운영체제는 '인터페이스'다
“운영체제는 결국, 필요에 의해 덕지덕지 기능을 덧붙인 인터페이스이다.”
— 경북대학교 김명석 교수님
운영체제는 사용자와 하드웨어 사이에서 동작하는 중간 관리자 역할을 합니다.
컴퓨터는 사용자가 직접 하드웨어(특히 메모리나 I/O 장치)에 접근하는 것을 매우 위험하고 복잡하다고 생각합니다.
그래서 OS가 대신 나서서 리소스를 로드하거나, I/O를 처리해주는 거죠.
※ 물론, 리눅스처럼 오픈소스로 공개된 OS의 경우에는 소스코드를 직접 수정할 수도 있지만 이는 별도의 라이선스와 기술력이 필요합니다.
OS는 왜 계속 발전할까?
하드웨어(특히 메모리나 CPU)와 소프트웨어가 발전하면서, OS에게 더 높은 성능이나 새로운 기능을 요구하게 됩니다.
그래서 운영체제는 사용자의 편의와 경험을 위해 계속해서 기능을 추가하고 성능을 개선해왔습니다.
운영체제의 발전: 정확한 '인과관계'가 있다
운영체제는 단순히 무작위로 기능이 쌓인 것이 아닙니다.
하드웨어 환경, 사용자 요구, 비용 같은 요소에 따라 분명한 목적과 이유가 생기고, 그에 맞춰 기능이 발전해온 거죠.
📜 운영체제 발전 역사 요약
1. Serial Processing (~1950s)
- OS가 없던 시절, 천공카드를 이용해 코드를 작성
- 하드웨어는 비쌌고, 인건비는 쌌기에 CPU를 최대한 효율적으로 활용하는 것이 중요했음
2. (Single) Batch Processing (~1960s)
- 여러 Job을 모아 **일괄 처리(batch)**함
- 메모리에 항상 상주하는 OS 역할의 Monitor가 처음 등장
3. Multiprogramming Batch Processing (1960s~1970s)
- I/O 작업 중 CPU가 놀지 않도록, 다음 Job을 병렬 처리
- OS에 버퍼링, 인터럽트 처리, 메모리 주소 관리 기능이 요구됨
구분 | Batch Processing | Multi-programming |
정의 | 사용자 개입 없이 Job을 순차 실행 | 여러 프로그램을 동시에 실행 |
속도 | 상대적으로 느림 | 빠름 |
CPU 활용 | 작업 없을 때 놀 수 있음 | 항상 바쁘게 활용 |
목적 | 비용 절감 | CPU 활용 극대화 |
4. Time-Sharing Processing (1970s~1980s)
- CPU 속도 증가로, **사용자 응답시간(Response Time)**이 주요 관심사로 부상
- 여러 사용자가 동시에 사용하는 듯한 **환상(illusion)**을 제공
- 카톡, 유튜브, 앱 등을 동시에 쓰는 우리가 체감하는 것과 유사
✔ CPU 성능 평가 지표
- Throughput Time: 단위 시간당 처리량
- Response Time: 첫 반응이 오기까지 걸린 시간
- Turnaround Time: 프로세스 시작~종료까지
- Waiting Time: Ready Queue에서 대기한 시간
5. OS + Internet (1990s)
- PC와 OS에 인터넷이 연결되면서 웹, Java, CGI 같은 인터넷 프로그래밍이 활성화됨
- QoS(서비스 품질 보장), RTOS(실시간 OS) 같은 기술이 등장
6. OS as Commodity (2010s~)
- OS는 이제 모든 기기(PC, 모바일, IoT 등)에 기본 탑재
- OS 자체가 플랫폼(Android, iOS, WebOS 등)이 되었고,
개발자/사용자 모두에게 친숙한 환경이 됨
마무리: 운영체제, 낯설지 않게 느껴졌나요?
운영체제 수업을 들으면서 처음에는 생소했던 개념들도 맥락을 알면 자연스럽게 이해되더라고요.
이 포스팅은 그 출발점으로, 앞으로도 중요한 핵심 개념들을 정리해서 계속 공유해보겠습니다!
공부하면서 어렵게 느껴졌던 개념, 시험 대비 정리하고 싶은 부분이 있다면 댓글로도 남겨주세요 :)
다음 포스팅에서 더 구체적인 개념으로 찾아올게요!
'study > Operating System' 카테고리의 다른 글
입출력 방식 쉽게 이해하기! Programmed I/O vs Interrupt I/O (1) | 2024.11.08 |
---|---|
[운영체제] 운영체제 수업 인트로 정리: 컴퓨터 구조와 OS의 만남 (0) | 2024.04.18 |
[운영체제] Three Main Features of Operating Systems (0) | 2024.04.18 |