이어서 이제 부터는 한학기동안 배울 수업내용이 어떤건지 전반적으로 살펴보겠습니다.
일단 컴퓨터시스템의 구성을 크게 한번 보겠습니다.
여러분들이 잘 알고 있듯이 컴퓨터 시스템에는 하드웨어들이 존재하죠. 하드웨어가 있습니다. 예를 들면 cpu, 또는 메모리 그리고 각종 입출력 장치들, 보조기억장치, 네트워크 장치 다 포함해서 IO device라고 합니다. 그래서 cpu와 메모리 그리고 기타 기본 장치들 이렇게 포함해서 hardware component들이 존재하고요.
그 다음에 위에 보면 software layer가 있죠. SW layer보면 각종 application들이 그 시스템에 설치되어 있는 각종 응용프로그램들이 실행이 됩니다.
이 하드웨어 기반으로 실행을 하는데 결국은 위에 있는 애플리케이션 영역을 우리가 소프트웨어라고, 특히 이제 응용소프트웨어라고 얘기를 하고. 밑에 아래쪽에 있는 이 cpu, memory주변 장치들의 영역을 하드웨어 component라고 얘기를 하는데 고 사이에 보면 operating system이라는게 있어요. 운영체제가 이렇게 응용소프트웨어와 그리고 하드웨어 사이에 이렇게 위치해서 존재합니다. 운영체제라는 영역이 존재해요. 운영체제라는게 우리가 한학기동안 공부할 주제이기는 한데 대체 운영체제라는게 무엇이길래 그리고 운영체제가 어떤 역할을 하길래 그리고 어떤 메커니즘으로 동작을 하길래 이렇게 하드웨어와 애플리케이션 소프트웨어 사이에 운영체제라는 것이 들어가 있어야 하는가, 이런것들을 한학기동안 여러분들과 공부한다 그러면 되겠어요. 그래서 운영체제의 세부적인 component들이 무엇이 있는지 그리고 각각의 componetn가 어떤 메커니즘으로 동작하는지, 그리고 그런 기능등이 왜 필요한지 , 뭐 이런 얘기를 한학기동안 공부한다 라고 생각을 하면 되고요. 운영체제에 focus해서 보면 될거고 뭐 이 전반적인 하드웨어가 있고 소프트웨어가 있고 이런 얘기들은 여러분들이 잘들 알고 있을 거라고 생각을 합니다.
조금 구체적으로 한번 보겠습니다. 운영체제의 기능을 한번 보겠습니다.
운영체제의 기능. 기능을 먼저 볼텐데 운영체제의 기능을 우리가 크게 4가지 영역으로 나누어서 얘기를 하면 요렇게 4가지 가능으로 구분을 할수가 있어요.
첫번째 운영체제는 어떤 기능을 하는가 하면 user interface역할을 합니다. 정확히 얘기하자면 사실 사용자 interface라기 보다는 사용자라는 말을 쓰기 보다는 여기는 사실 app이라고 보는게 더 정확한 표현일 수 있어요. 응용프로그램들을 위한 interface를 제공합니다. 보통 운영체제를 우리가 보통 할때는 운영체제와 사용자를 동일시하는 같은 개체로 보는 경우가 많아서 이렇게 user interface라고 얘기를 하는데 정확히 얘기하자면 application에 대한 interface를 운영체제가 제공한다 라고 여러분들 생각하면 될거 같구요. 이게 도대체 무슨 얘기이냐, 운영체제가 어떤 application대상으로 어떤 interface를 제공한다라는 점은 우리가 이제 1장 공부할때 여러분들과 좀 더 자세하게 공부할 것으로 생각을 합니다. 일단 응용프로그램들 대상으로 운영체제가 어떤 서비스를 제공하는데 그 application들이 운영체제에 어떤 서비스를 해달라고 요청할 수 있도록 그 요청하는 interface를 운영체제가 제공을 해요. 그니까 운영체제가 이런저런 interface를 여러가지 서비스 interface를 제공하는데 그 interface들을 사용해서 운영체제에 뭔가 서비스 요청을 하게 된다, 이렇게 여러분들 이해하면 될거 같아요. 그런 기능을 일단 운영체제가 가지고 있다. 결국 운영체제는 application대상으로 서비스 하는 기능을 한다. 이게 첫번째 기능이라고 여러분들이 이해를 하면될 것 같고요.
그 다음에 두번째는 보다 더 앞으로 우리가 아주 intensive하게 공부할 내용이긴 한데. 두번째는 resource management에요. 자원 관리를 담당합니다. 운영체제는 자원 관리를 담당해요. 이 user interface와 resource management를 앞에 있는 슬라이드 그림으로 잠깐만 다시 한번 보면요.
운영체제는 위쪽에서는 application들이 이렇게 돌아요. 응용프로그램들이 실행을 합니다. 그래서 이 응용프로그램들 대상으로는 api를 제공한다, 애플리케이션. 애플리케이션 대상으로 어떤 interface를 제공한다. 그럼 이제 이렇게 여러분들이 이해하면 될것 같고요. 그 다음에 운영체제 아래에는 이런 각종 리소스들이 있잖아요, cpu, memory 각종 주변 장치들이 있다 라고 얘기를 했는데 이런 각종 리소스들을 운영체제가 management한다는 거에요. 관리하는 역할을 한다는 겁니다. 그니까 위쪽 애플리케이션 대상으로는 interface를 제공하고 아래쪽 하드웨어 component에 있는 각종 리소스 대상으로는 관리하는 기능을 한다. 리소스를 관리한다, cpu관리하고, 메모리 관리하고 예를 들어 메모리의 어느 영역을 누구에게 할당해 줄 것인가, cpu를 언제부터 언제까지 누구에게 할당할 것이가 이게 관리 기능이에요. 이런 관리 기능을 아래쪽으로 담당을 한다 라고 이해를 하면 될것 같아요. 그래서 위쪽으로는 user interface, application interface. 아래쪽으로는 resource management이렇게 이해하면 되겠습니다. 근데 여기서 리소스라는 말을 우리가 썼잖아요. 방금 전에 cpu나 메모리나 각종 주변 장치가 다 리소스에 해당한다 라고 여러분들에게 소개를 했는데 그 리소스라는 말을 잠깐 구분해서 아래쪽으로 내려와서 보면요.
리소스에는 하드웨어 resource가 있고 또 sw 리소스도 있어요. 하드웨어 리소스가 뭐냐면 방금 전에 봤던 프로세서 다시 말하면 cpu죠. cpu와 메모리와 각종 입출력 장치, 네트워크 장치, 보조기억 장치 이런것들은 전부 하드웨어 리소스에 해당을 하고요. 그 다음에 소프트웨어 리소스가 있는데 이건 뭔가 하면 컴퓨터 시스템 보조 기억 장치의 저장되있는 각종 파일들. 보조 기억 장치 자체는 하드웨어 리소스이지만 그안에 저장되어 있는 각각의 파일들, 그리고 컴퓨터 시스템의 통신선을 타고 돌아다니는 각종 메세지들, 그 다음에 컴퓨터 시스템에서 실행하고 있는 앱들, 실행하고 있는 프로그램들, 그냥 설치되어 있는 앱이 아니라 현재 실행중인 프로그램을 우리가 프로세스라고 해요. 그래서 이런 파일이나 메세지나 프로세서나 이런것들은 우리가 소프트웨어 리소스라고 얘기를 합니다, 한편으로는. 그래서 컴퓨터 시스템의 resource management라고 하면 하드웨어 리소스management도 있고 소프트웨어 리소스 management도 있어요. 그래서 하드웨어 리소스만 관리하는게 아니라 소프트웨어 리소스도 운영체제가 관리를 한다. 이렇게 이제 생각을 하면 되겠습니다. 이게 두번째 큰 주제고요. 근데 그 중에서 resource management중에 소프트웨어 리소스중에 프로세스라는게 있다고 했잖아요. 이 프로세스라는 것이 있다고 했는데 이 processe라는 건 앞으로 공부할 이제 운영체제 본론에 들어가면 제일 먼저 공부할 구체적인 주제이긴 한데요. 프로세스라는 것이 너무 중요한 entity라서, 중요한 컨셉이라서 프로세스의 관리는 이렇게 따로 때서도 얘기를 합니다.
이렇게 3번째 운영체제의 기능으로. 그니까 resource management의 한 부류로 생각을 할수도 있지만 왜냐하면 프로세스가 소프트웨어 리소스에 해당한다고 보기도 하기 때문에 하지만 너무나 또 전체적으로 중요한 컨셉이라서 프로세스 관리는 또 따로 때가지고 프로세스 management로 독립적으로 얘기를 한다 라고 이해하면될것 같고요.
그 다음에 마지막으로 운영체제의 기능이 뭐가 있는가 하면 네트워킹. 컴퓨터 시스템과 또 다른 컴퓨터 시스템간의 통신 망으로 연결되어있는 그런 상황에서 메세지를 주고 받을 수 있게 하는 기능, 네트워킹 기능. 그 다음에 security와 protection 기능, 보안기능이죠. 보안 및 정보보호에 관련된 기능 이런것들도 운영체제가 기능으로 다 가지고 있어요.
그런데 크게 이렇게 4가지 기능을 운영체제가 한다 라고 여러분들에게 소개를 했는데 그 중에서 요 user interface에 해당하는 부분은 이거는 요즘은 운영체제의 interface에 해당하는 application interface는 이제 따로 설명을 하겠지만 특별히 user interface, 요즘에 UI라는 말을 쓰죠. UX라는 말도 쓰고요. 또는 HCI이런 말들 많이 쓰잖아요. User interface 또는 user experience 또는 human computer interface/interaction 이런 컨셉은 독립적인 분야로 따로 떨어져 나가있어요. 그래서 이런 분야는 또 다른 교과목이나 또 다른 분야에서 공부하게 될것이라서 우리 운영체제 기능에서는 user interface에서 우리가 하고자 하는 얘기는 application대상으로 한 interface만 여러분들에게 소개할 겁니다. 그리고 보다 더 진보된 또 다른 UI, UX, HCI에 대해서는 또 다른 교과목에서 여러분들이 공부하게 될거다 라고 이해를 하면 되고요. 그 다음에 이 아래쪽에 4번에 있는 네트워킹 기능있죠. 이 네트워킹 기능도 워낙 복잡, 운영체제 안에 들어있는 기능이긴 하지만 워낙 복잡한 기능이라서 이것도 컴퓨터네트웍 이런 별도의 따로 개설이 됩니다. 그래서 네트워킹에 대해서도 여러분들이 별도의 과목에서 공부하게 될거고요. 물론 네트워킹 기능중에 tpc/ip 또는 udp, 이 tcp나 udp 그리고 ip layer, 이 영역은 운영체제 안에 들어있는거에요. 하지만 운영체제 안에 들어있지만 그런 영역에 대한 공부는 네트워킹 쪽 과목에 가서 공부하게 될거다 라고 이해하면 되겠습니다. 그 다음에 securty와 protection, 이쪽도 정보보호 또는 정보보안 과목들이 있잖아요. 그쪽에서 더 많이 공부하게 될거다 라고 이해하면 되겠어요. 운영체제에서 꼭 필요한 부분은 우리가 이제 이후에 여러분에게 소개도 하겠지만 전반적인 내용들, 네트워킹과 관련된 security, protection과 관련된 그리고 ui,ux와 관련된 전반적인 내용은 별도의 과목에서 따로 공부한다 이렇게 여러분들이 이해한다고 보면 되겠고요. 결과적으로는 여러분들하고 운영체제 교과목에서 internsive하게 공부할 내용은 여기 resource management하고 그 다음에 process management하고 이 두 영역이 이게 os에 가장 중요한 component이고 이 부분을 위주로 우리가 앞으로 공부하게 될거다 라고 이해를 하면 되겠습니다. 자 그렇게 소개를 하고요.
그렇게 해서 우리가 한 학기동안 여러분들과 공부할 내용들을 쭉 한번 처음부터 끝까지 소개를 하면 이렇습닏다. 제일 먼저 본격적으로 수업이 시작되면 제일 먼저 여러분들에게 운영체제에 대한 Introdcution, overview 이부분을 소개할 거고용. 그 다음에 두번째 주제가 여러분에게 얘기했던 프로세스관리에요. 프로세스 management. 바로 앞의 슬라이드에 요 3번내용에 있었죠. 그거에 대한 내용이 여기 있습니다. 그래서 process subsystem이라는 이름으로 운영체제가 실행중인 프로그램을 어떻게 관리하는가 이 내용을 여러분들과 공부할 거다 라고 보면 되겠어요. introduction지나면 바로 프로세스 관리 부분을 이 내용을 공부할겁니다. 그래서 프로세스라는 것이 무엇이며, 프로세스를 운영체제가 어떻게 관리하며 그 다음에 프로세스들이 cpu에서 실행되기 위해서 프로세스드레게 cpu를 할당해주는 것은 어떻게 진행되는가, 프로세스 scheduling이라고 합니다. scheduling을 어떻게 하는가. 그 다음에 프로세스 동기화. 프로세스와 프로세스간에 메세지를 주고 받거나 서로 다른 프로세스들이 같은 데이터 또는 같은 리소스, 같은 자원에 동시 접근을 할때 그 coordination을 어떻게 하는가, 뭐 이게 synchronization관련 내용이에요. 이 부분도 여러분들과 공부를 할거고. 또 프로세스와 리소스간에 interaction이 벌어지다 보면 프로세스가 어떤 리소스를 사용하고, 또 사용하다가 반납하고 또 다른 리소스를 사용하겠다고 요청도 하고 이런과정이 여러 프로세스에 의해서 계속 반복되다 보면 컴퓨터 시스템에 deadlock이라는 현상이 나타나요. 보통 한국말로 교착상태라고 합니다. 이런 상황을 어떻게 해결할것인가 이 얘기도 여러분과 이제.. process subsystem쪽에서 여러분들과 공부할 겁니다. 그래서 2장, 3장, 4장, 5장, 6장, 7장까지 모든 챕터가 다 있지는 않지만, 고 구간에서 프로세스 관리에 대한 공부를 할거고요. 그 다음에 이제 리소스 관리입니다. 본격적으로 리소스 관리중에 제일 중요한게 메모리 관리부터 시작합니다. Memory subsystem. 그니까 주기억장치를 어떻게 관리할 것인가 그리고 이 가상 메모리 어떻게 관리할 것인가. 가상 메모리라는게 무엇인가라는 것도 뒤에 가서 여러분들에게 소개하겠습니다. 지금 소개하기에는 너무 이르고요. 그래서 우리는 주기억장치의 관리 기법, 그 다음에 가상메모리 관리 기법, 운영체제가 어떻게 진행하는가, 어떤 메카니즘으로 진행하는가 이런 공부들, 메모리 관련 subsystem에서 공부할 겁니다. 그 다음에 그 메모리 관리쪽이 끝나고 나면 그 다음에 거의 마지막 얘기인데요. 여기가 file subsystem이에요. 파일 시스템 관리 기능입니다. 파일 subsystem이라는 것은 file들을 쭉 모아놓고 각각의 파일들을 어떻게 접근하고 어떻게 효율적으로 어떻게 쉽게 사용자 application에 접근하게 할것인가, 이거하고 관련된 내용인데 보통은 file subsystem은 대부분 다 보조기억장치 storage에 저장이 되어있죠. 하드디스크나 아니면 ssd나 이런 storage영역에 들어있는데 그 secondary storage에 들어있는 파일 subsystem을 어떻게 관리할 것이냐, 요게 파일 시스템의 구성 그리고 실제 file system을 구현 하는가 이런 이슈들 관련해서 여러분들하고 이 수업의 거진 마지막부분에서 얘기를 할거에요. 이렇게 하면 이안에 사실은 프로세스 관리 외에 cpu관리 여기서(scheduling) 진행하는 거고요. 그리고 메모리 관리, 그 다음에 I/O관리 주로 이쪽에(file subsystem) 들어 있고요. 물론 입출력 관련 내용은 프로세스서브시스템에서도 일부 진행을 합니다. 이렇게해서 프로세스관리와 리소스관리에 대한 전반적인 운영체제 내용을 공부하게 될겁니다 마지막으로 만일에 시간이 가능하다면 운영체제 임베디드 시스템과 분산시스템체제에 대한 공부를 하게 되겠지만 여기까지 쉽지 않더라고요. 그래서 대략 우리 한학기 수업은 여기까지 하게 된다. 라고 이해하면 될거 같아요. 여기까지가 한학기 수업분량이라고 하면 되겠습니다.
댓글