리눅스 : 공개 소프트웨어. 소스코드가 공개되어 누구나 이용 가능하다.
-> 공개된 사항들을 수정하고, 버그를 잡는 등 활용이 가능하다.
반대로, 윈도우 맥같은 운영체제는 비공개. 사용자는 컴파일된 바이너리 파일을 구매
왜 리눅스 개발자들은 공짜로 코드를 공개했을까?
-> 소프트웨어라는 상품이 시장에서 특이한 성질을 가지기때문.
소프트웨어는 개발하는데 인건비가 든다. 개발된 다음 판매할때는 판매를 위한 비용이 발생하지 않음.
그냥 웹사이트에 올려놓고 팔면 됨.
그래서 손익분기점까지만 돈을 받고 그 이후론 가격을 낮춰서 시장을 장악하는 방법을 사용해옴.
특정제품이 시장을 장악하게되면, 2등 3등이 죽게됨.
어차피 망한거 그냥 공개해버림. 그게 리눅스.
근데 공짜라는건 의미가 달라짐. 많은 사람들이 그냥 사용하게되고, 시장에 점유율이 올라가게됨.
또 신기하게도 리눅스 개발자들은 망하지않고 교육시장, 컨설팅 등을 통해 네임밸류를 높이고 각광을 받게됨.
"공개 소프트웨어 정신" : 필요하면 누구나 사용하고, 수정을 자유롭게 해서 더 나아지도록 함께 관리하는 것.
망했지만, 공개하므로서 더욱 탄탄한 입지를 가지게 됨.
: 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층.
협의의 운영체제 -> 커널
: 운영체제의 핵심 부분으로 메모리에 상주하는 부분. 부팅 후 ~ 종료까지 메모리에 올라가있는 프로세스.
광의의 운영체제
: 커널 뿐 아니라 각종 주변 시스템 유틸리티를 포함한 개념
1) 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공.
2) 자원의 효율적 관리(CPU, Memory, disk, 그 외 소프트웨어 자원)
-> 주어진 자원으로 최대의 성능을 내도록 함.
컴퓨터의 두뇌, 통치자로서 역할을 함.
한정된 메모리 공간에 여러 프로그램들이 동시에 올라가는데, 프로그램마다 사용할 메모리를 적절히 분배해야함.
메모리를 마냥 1/n 해서 분배하는 것이 아니라, 특정 프로그램에 집중하게 하는 등 로직이 존재.
단일 작업(single tasking)
한 번에 하나의 작업만 처리
ex) MS-DOS 프롬프트 상에서는 한 명령의 수행을 끝내기 전에 다른 명령을 수행할 수 없음.
다중 작업(Multi tasking)
동시에 두 개 이상의 작업 처리
ex) UNIX, MS Windows 등에서는 한 명령의 수행이 끝나기 전에 다른 명령이나 프로그램을 수행할 수 있음.
MultitaskingMultiprogrammingTime sharingMultiprocessMulti-programming은 여러 프로그램이 메모리에 올라가 있음을 강조.Time sharing은 CPU의 시간을 분할하여 나누어 쓴다는 의미를 강조.Multiprocessor : 하나의 컴퓨터에 CPU가 여러 개 붙어있음을 의미
여러 개의 CPU가 하나의 메모리를 공유하여 쓰다보면 충돌하는 문제가 발생하기도 함.
해당 수업에서는 CPU가 하나 있는 환경에 대해 생각해볼것.
: OS 개발자 관점에서 수강해야함.