본문 바로가기

study/Operating System

[운영체제] 운영체제는 왜 존재하고, 어떻게 발전해왔을까?

이번 학기에는 운영체제(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 등)이 되었고,
    개발자/사용자 모두에게 친숙한 환경이 됨

마무리: 운영체제, 낯설지 않게 느껴졌나요?

운영체제 수업을 들으면서 처음에는 생소했던 개념들도 맥락을 알면 자연스럽게 이해되더라고요.
이 포스팅은 그 출발점으로, 앞으로도 중요한 핵심 개념들을 정리해서 계속 공유해보겠습니다!

공부하면서 어렵게 느껴졌던 개념, 시험 대비 정리하고 싶은 부분이 있다면 댓글로도 남겨주세요 :)
다음 포스팅에서 더 구체적인 개념으로 찾아올게요!