[웹 프로그래밍 스쿨 16주차] 운영체제(O/S)에 대해 알아보기!
웹 프로그래밍 스쿨 django 수업 9주 차 포스팅입니다!😃
이번 주를 끝으로 django 수업이 모두 끝이 났습니다!
장고 튜토리얼을 시작으로 장고의 MVT구성을 살펴보고 함수형 뷰로 코드 짜기, 클래스형 뷰 파헤쳐보기, 각종 도메인 만들어보기, aws를 이용한 서버 구축 및 배포까지 약 두 달간 많은 걸 한 것 같아서
뿌듯하면서도 얼마만큼 제대로 흡수해서 내 것으로 만들었는지를 생각하면 조금 아쉬운 두 달이었던 것
같습니다.
강의를 시작 하기 전인 두달 전과 비교를 해본다면 가장 큰 변화가 생긴 부분은 브라우저 상에서 보기만 했던 것들을 이제 뭔가 만들어 볼 수 있을 것 같다는 생각이 든다는 것이고,
변하지 않은 부분은 공부를 한다고 했는데 아직도 공부할게 아주 많다는 점인 것 같습니다😫
그래서 남은 파이썬과 컴공 심화 강의를 대비할 겸 운영체제에 대해 공부해봤습니다.
1. 운영체제란?
운영체제(Operating System)란 하드웨어(resource) 최적화를 위해 설계된 하드웨어 관리 프로그램으로
어플리케이션의 기반이 되고 사용자와 하드웨어를 연결시켜주는 매개자 역할을 합니다.
하드웨어란
CPU, 메모리, I/O 장치(디스크, 키보드, 마우스, 모니터, 스피커 등) 등의 컴퓨터 장치를 말하고
하드웨어 관리란
여러 어플리케이션과 유저의 하드웨어 사용을 제어하고 협력해서 컴퓨터의 성능을 높이는 것을 말합니다.
자원에 대한 수많은 요청들이 충돌하지 않게 하기 위해 어떤 프로그램 또는 유저에게 하드웨어를 할당할지를 결정하고 (resource allocator),
에러를 예방하고, 부적절한 자원 사용(I/O장치 등)을 예방하기 위해 유저 프로그램의 실행을 관리합니다.(resource manager)
매개자역할은
사용자 개인이 수행하고자 하는 작업의 효율을 높일 수 있도록 하드웨어 사용의 편의성을 제공하고
하드웨어를 다수의 유저가 공유하고 있는 경우, 유저 모두에게 적절히 자원을 배분하는 것처럼
유저가 처한 상황에 맞게 효율성이 높은 방향으로 문제를 해결할 수 있게 하는 역할입니다.
2. 부팅(booting)
운영체제가 메인 메모리에 올라가게 되는 과정은 아래와 같습니다.
1) 컴퓨터의 전원이 켜지면 CPU는 ROM안에 있는 Instruction을 읽어와서 실행합니다.
2) ROM안에는 POST(Power On Self Test) 프로그램과 Boot loader를 실행시키는 프로그램이 들어있습니다.
POST프로그램은 키보드, 마우스가 연결되어있는지 메모리 성능이 어느 정도인지 등을 체크합니다.
3) POST가 완료되면 bootstrap loader가 실행되어 하드디스크 안에 있는 OS를 찾아 메인 메모리로 올립니다.
4) OS가 메모리에 올라오면 운영체제 초기화면이 나타나고 사용자의 명령을 받을 수 있습니다.
3. 운영체제의 구성
OS는 크게 Kernal과 Shell or Command interpreter두 가지로 구성됩니다.
1) 커널은 os의 핵으로써 하드웨어의 자원을 관리하는 역할을 담당합니다.
Process Management, Memory Management, i/o Management, File management 등으로
세분화할 수 있습니다.
2) 셸은 os의 바깥쪽에서 사용자로부터 명령을 받아 해석해서 실행시키는 역할을 담당합니다.
4. 운영체제의 발전과정
1) betch processing system
소스코드 카드를 넣고, 메모리에 적재하고, 컴파일러를 올려 해석하고, 라이브러리와
링크하고, 메모리에 로딩하는 일련의 과정들을 operator(사람)없이 처리하기 위해
o/s가 탄생합니다.
2) Multiprograming system
기술이 발전함에 따라 하드웨어의 성능은 계속 좋아졌지만 다른 하드웨어들의 처리속도가
cpu의 처리속도를 따라오지 못해 expensive 자원인 cpu가 유휴상태에 있게되는
cpu idle 현상이 발생하게 되는데,
이런 문제를 해결하기위해 메인메모리에 프로세스를 여러개 두어, 하나의 프로세스에 할당된
cpu가 i/o작업 등을 기다려야해서 일을 하지 않는다면 다른 프로세스로 cpu를 할당해 idle을
줄이는 방향으로 발전하게 되었습니다.
3) Time-sharing system
모니터와 키보드가 등장하면서 컴퓨터와 상호작용이 가능한 단말기를 부착해서
여러사람이 컴퓨터를 공유하는 형태로 사용하게 되었는데, cpu가 idle한 상태가 발생할 경우
다른 프로세스에게 cpu를 할당하던 기존의 방식에서 -> 각 프로세스에게 cpu를 아주 짧은
시간만 할당하고 강제로 회수함을 반복하는 방식으로, 각 유저가 동시에 컴퓨터를 사용하는 것처럼
느낄 수 있도록 발전하게 되었습니다.
참고한 교수님의 강의입니다.
http://www.kocw.net/home/search/kemView.do?kemId=978503
참고한 책입니다.
Abraham-Silberschatz-Operating-System-Concepts---9th
'패스트 캠퍼스' 카테고리의 다른 글
[웹 프로그래밍 스쿨 18주차] 팀 프로젝트 시작! (0) | 2019.07.07 |
---|---|
[웹 프로그래밍 스쿨 17주차] 컴퓨터 시스템 구조(computer system structure)에 대해 알아보기! (0) | 2019.06.30 |
[웹 프로그래밍 스쿨 15주차] 레이니스트 컨퍼런스 탐방! (0) | 2019.06.16 |
[웹 프로그래밍 스쿨 14주차] 추천시스템에 대해 간단히 알아보기! (0) | 2019.06.09 |
[웹 프로그래밍 스쿨 13주차 ] Git 기본 명령어 정리! (0) | 2019.06.02 |