뜌릅
운영체제란 본문
운영체제(Operating System)는 컴퓨터 시스템의 자원들을 효율적으로 관리하며,, 운영체제는 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로서 동작하는 시스템 소프트웨어의 일종으로, 다른 응용프로그램이 유용한 작업을 할 수 있도록 환경을 제공해 줍니다.
또 사용자입장에서 운영체제는 편리성을 제공해 주는데, 이는 사용자가 건드려서는 안될것을 건드리는 것을 예방하거나, 보기편한 GUI, 인터페이스등을 제공해줍니다.
프로세스 관리
프로세스에 대해 설명하기 전에 커널에 대해 설명을 간단하게 해야 합니다.
커널은 사용자 인터페이스, 어플리케이션 등등과 시스템 소프트웨어 등을 분리하는 역할을 합니다. 사용자가 하드웨어 제어를 하고 싶을 때에는 커널을 통해서만 조작이 가능합니다.
이러한 기능을 제공하는 이유는 프로세스가 다른 프로세스의 영역을 침범하는 것을 사용자가 함부로 못하게 하기 위해서입니다.(위에서 말한 건드리지 말아야할 것을 건들지 못하게 예방합니다.)
또한 멀티 태스킹등의 기능을 제공해야 하는데, 이를 운영체제가 스케줄링등의 기법을 통해 제공해줍니다.
저장장치 관리
컴퓨터에는 주로 4가지 종류의 저장장치가 존재한다.
레지스터, 캐시, RAM(주기억장치), HDD(SSD와 같은 보조기억장치)로 구성되어있다.
그림과 같이 위로 갈수록 접근 속도와 가격이 증가하며, 아래로 갈수록 접근시간과 기억용량이 증가하게 됩니다.
또한 보조기억장치를 제외한 레지스터, 캐시, 주기억장치는 컴퓨터가 종료될 경우 데이터가 날라가게 됩니다.(최근에는 RAM의 성능을 갖으면서 NON-FLASH인 기억 장치또한 개발되었다고 한다. 다만 개인컴퓨터에 까지 상용화는 아직 한참 멀었다. 해당 장치를 사용할려면 운영체제 또한 처음부터 다시 갈아엎어야 하고 비싼 가격과 수요가 뒷받쳐주지 않기 때문이다..)
컴퓨터 입장에서 자신이 곧 사용하거나 사용해야할 데이터를 위로 보내고, 안사용할 데이터를 아래로 보내야 한다.
이러한 방식을 최적화 할수록 컴퓨터의 성능이 향상되고 결과적으로 사용자 또한 편리성을 얻기 때문에, 매우 중요하다.
또한 기억장치를 최대한 활용하는것도 중요한데, 최대한 활용하여 많은 데이터를 저장시킬수 있어야(특히 RAM이나 캐시 메모리에서) 컴퓨터의 성능이 향상되기 때문이다.
네트워킹 관리
네트워킹은 컴퓨터 활용의 핵심과도 같아졌다.
TCP/IP 기반의 인터넷에 연결하거나, 응용 프로그램이 네트워크를 사용하려면 운영체제에서 네트워크 프로토콜을 지원해야 한다. 현재 상용 OS들은 다양하고 많은 네트워크 프로토콜을 지원한다.
이러한 네트워킹은 노드와 노드간의 통신뿐만 아니라, 컴퓨터 안에서 각 코어간의 통신도 의미합니다.
사용자 관리
컴퓨터는 한명의 사용자만이 사용하는 것이 아니다. (물론 과거에는 MS-DOS같은 한명의 사용자만 갖는 컴퓨터도 존재했다.)
사용자별로 계정을 분리해야 하며, 프라이버시를 지켜야 합니다. 이 밖에도 파일이나 시스템 자원에 접근권한을 지정하는 것 또한 사용자 관리 기능이다. 이는 ID/PW을 통해서 권한을 부여할수있습니다.
이러한 사용자관리는 보안에도 큰 영향을 끼친다. 응용프로그램에서도 고유의 계정을 가지기도 하고 이것들은 응용프로그램의 설정이나 목적에 따라 차이가 있습니다. 운영체제와 응용프로그램간의 계정이 다르면 응용프로그램의 계정을 소홀히 하여 취약한 응용프로그램을 통해 공격자가 운영체제에 접근하여 정보를 습득하고 운영체제를 공격하는등의 보안상 큰 위혐이 생길수 있습니다.
특히 TFTP와 같이 별도의 계정이 존재하지 않은 응용프로그램이라면 더욱 세심한 주의가 필요하다고 합니다.
디바이스 드라이버
디바이스 드라이버는 중요하다.
장치 드라이버는 특정 하드웨어나 장치를 제어하기 위한 프로그램이며, 운영체제 내 커널의 일부입니다. 하드웨어와 밀접하고 해당 하드웨어를 제어하는 프로그램입니다. 디바이스의 내부에 접근하여 하드웨어를 제어하고 운영체제와 어플리케이션 사이에서 중간 다리 역할을 수행합니다.
윈도우 사용자의 경우 여러가지 드라이버가 설치된것을 보았을 탠데 각 입출력 장치에 맞는 드라이버가 필요합니다.
마우스의 경우 마우스 드라이버, 키보드의 경우 키보드 드라이버.
이 드라이버에는 하드웨어 구동 방식과 특성, 기능등에 대한 정보가 담겨있어 해당 입출력 장치 제어를 할 수 있게끔 설계되어 있습니다.
이를 개발하기란 쉬운것이 아닌데, 과거 몇년전의 컴퓨터까지 호환되는 디바이스 드라이버를 개발해야 하며, 운영체제가 달라도 호환이 되어야 한다.
또한 컴퓨터 또한 몇년후에 나오게 될 디바이스에 맞춰서 개발해야 한다.
디바이스의 호환성을 맞추는 일은 매우 힘든일이기 때문에 중간에서 표준을 정해주는 협회가 도움을 준다. (앞으로 이런 표준으로 개발하자고 정해놓거나 등등)