Protection and Security
Protection and Security
Protection (보호) 란,
어떤 프로세스 혹은 사용자가 자원에 접근하는지를 제어하는 메커니즘이다.
특히 다중 사용자를 허용하는 컴퓨터에서
소유권(privilege)과 접근권(access permission)의 통제는 필수이다.
Security (보안) 이란,
내부 혹은 외부로부터의 공격에 맞서는 시스템의 방어 작용이다.
여기서의 공격이란,
-
DoS (Denial-of-Service, 시스템을 악의적으로 공격해
해당 시스템의 자원을 부족하게 하여
원래 의도된 용도로 사용하지 못하게 하는 공격),
-
웜 (worms)
-
바이러스 (viruses)
-
신원 도용 (identity theft)
-
서비스 도난 (theft of service)
등의 넓은 범위의 공격을 말한다.
시스템은 일반적으로 사용자들을 구분하여
그들이 어떤 일을 할 수 있는지를 정한다.
사용자 ID나 보안 ID 같은 정보엔 이름, 번호 등이 있으며
각각의 유저에 배정된다.
사용자 ID는 모든 파일이나 프로세스와 연관(매칭)되어,
운영체제는 이것으로 사용자가 그 파일이나 프로세스에 접근하는 것을 제어한다.
때때로 여러 명의 사용자들이 묶여 그룹 ID로 저장하기도 하는데,
이 역시 각 프로세스와 파일들에 매칭되어 접근을 제어하는데 사용된다.
권한 상승으로 ID를 바꾸어 권한을 더 얻게 될 수도 있다.
Computing Environments - Traditional
전통적인 컴퓨팅 환경은 다수의 독립적인 범용 환경과
제한적인 네트워크 환경으로 이루어졌다.
이렇듯 옛날에는 다 독립적이었고, 컴퓨터 간 연결이 쉽지 않았지만
지금은 인터넷의 발달로 대부분의 시스템이 다른 시스템들과 서로 연결되어있기 때문에
각각의 경계가 모호해졌다.
포탈이란 것으로 내부 시스템에의 웹을 통한 접근을 제공한다.
네트워크 컴퓨터 (thin clients)는 Web Terminals 와 같은 일을 한다.
Web Terminals는 보안, 유지보수가 필요한 경우 전통적 PC, 워크스테이션을 대체한다.
모바일 컴퓨터들은 무선 네트워크로 연결이 되어있다.
이 컴퓨터들은 PC와 동기화 되어 정보 휴대가 용이해졌다.
무선 전화나 네트워크에 연결되어 컴퓨터의 웹 포털을 이용할 수 있다.
네트워크는 이제 유비쿼터스해진다.
모든 게 인터넷으로 연결될 수 있다보니,
집의 시스템까지도 인터넷 공격에서 집의 컴퓨터를 보호하기 위해 방화벽을 사용한다.
Computing Environments - Mobile
손에 들고 다닐 수 있는 스마트폰, 태블릿, 기타 컴퓨터들이 이에 속한다.
이들은 가볍고, 이동할 수 있다.
전통적인 랩탑과 이들의 기능적 차이점으로는
이들은 화면 크기, 메모리 용량, 전체적 기능을 포기한 대신
이메일, 웹브라우징 등에서 휴대성을 얻었다.
요즘은 더 좋아져서 구분이 불가능할 정도이다.
또 모바일 기기들에는 특별한 기능들이 있는데
데스크톱에서는 사용하지 못하는 GPS, 자이로스코프 등이 있으며
이 기능으로 증강 현실과 같은 응용 프로그램들을 사용할 수 있다.
연결을 위해 IEEE 802.11 wireless(Wi-Fi)나
cellular data (통신사가 쏴주는 데이터)를 이용한다.
이들 영역에서 선두 주자로는 Apple의 iOS와 Google의 Android가 있다.
Computing Environments - Distributed
분산 시스템은 물리적으로 떨어져 있는 다른 (heterogeneous) 기종들의 컴퓨터 시스템들의 집합이다.
사용자가 다양한 자원에 접근할 수 있도록 네트워크로 연결되어 있다.
공유 자원에 대한 접근은 계산 속도와 기능, 데이터 가용성 및 신뢰성을 향상시킨다.
네트워크는 곧 통신 경로이며, 이에는 다양한 통신 프로토콜이 사용된다.
TCP/IP 가 가장 일반적인 통신 프로토콜이다.
네트워크 운영 체제는 네트워크로 연결된 시스템 간의 기능들을 제공한다.
네트워크 운영 체제를 사용하는 컴퓨터는 다른 컴퓨터들과 네트워크로 연결되어 있다.
단, 통신이 가능하더라도 독자적으로 동작한다.
분산 운영 체제는 덜 독자적으로, 하나의 운영 체제가 동작하는 것처럼 보이기 위하여
서로 밀접하게 통신을 한다.
Computing Environments - Client-Server
클라이언트 서버는 특별한 형태의 분산 시스템이다.
PC의 성능이 증가하고 가격은 내려가면서,
기존의 중앙 집중식 시스템에 연결된 터미널은 점차 PC로 대체되었다.
오늘날의 컴퓨팅 시스템은 Client-System 의 요청을 처리하기 위해
서버 시스템으로 동작하는데, 이를 Client-Server라고 한다.
서버는 계산 서버와 파일 서버로 나뉜다.
계산 서버
Client 가 작업을 요청할 수 있는 인터페이스를 제공한다.
계산 서버는 이것을 통해 받은 요청을 처리 후 결과를 Client에게 돌려준다.
예로 데이터베이스가 있다.
파일 서버
파일의 생성, 읽기, 삭제 등이 가능한 파일 시스템을 제공한다.
웹 브라우저에게 파일을 전달하는 웹 서버가 대표적인 예이다.
Computing Environments - Peer-to-Peer
분산 시스템의 또 다른 모델이다.
P2P는 클라이언트와 서버를 구분하지 않는다.
대신에, 모든 노드는 Peer (동료) 로 간주된다.
각각은 요청을 하냐 마냐에 따라서
클라이언트로 활동할 수도, 서버로 활동할 수도,
아니면 둘 다로 활동할 수도 있다.
노드는 P2P의 네트워크에 합류해야 한다.
이때 합류 방법에는 두 가지가 있는데,
- 네트워크에 있는 중앙 검색 서비스를 통해 자신의 서비스를 등록하거나
- discovery protocol을 통해 서비스 요청을 퍼뜨리고, 그 요청에 응답하는 방법이 있다.
Computing Environments - Virtualization
가상화란 운영 체제가 다른 운영 체제 내에서
하나의 응용 프로그램으로서 실행되게 하는 것이다.
에뮬레이션도 넓은 의미로 보자면 가상화의 한 기법이다.
에뮬레이션은 CPU의 유형이 다를 때 사용한다.
이는 일반적으로 가장 느린 방법이며,
컴퓨터 언어가 기계어가 아닌 그보다 더 고급 유형이나,
그 중간의 유형으로 구현되어 있을 때 사용한다.
이런 상황을 interpretation이라고 한다.
반면 가상화는 같은 CPU 체제에서 사용한다.
가상화는
- 각 게스트 OS를 실행한다.
- 이들의 자원 사용을 관리한다.
- 각 게스트를 서로로부터 보호한다.
Computing Environments - Cloud Computing
네트워크를 통해 컴퓨팅, 저장소,
심지어 서비스 같은 응용 프로그램까지 전달할 수 있다.
이는 가상화의 논리적인 확장이라고 할 수 있다.
Amazon의 EC2 같은 경우는 수천 개의 서버, 수백만 개의 가상머신,
페타바이트 수준의 저장소를
사용한만큼 돈만 낸다면 인터넷으로 바로 사용할 수 있다.
클라우딩 컴퓨팅에는 여러 유형이 있다.
-
public cloud - 돈만 낸다면 누구나 인터넷을 통해 사용이 가능하다.
-
private cloud - 회사가 사용하며, 회사가 돌린다.
-
hybrid cloud - public 과 private cloud 의 요소를 포함한다.
-
Software as a Service (SaaS) - 인터넷을 통하여 사용 가능한 응용 프로그램이다. (예 : 워드 프로세서)
-
Platform as a Service (PaaS) - 인터넷을 통해 제공되는 소프트웨어의 스택이다. (예 : 데이터베이스 서버)
-
Infrastructure as a Service (IaaS) - 인터넷을 통해 사용 가능한 서버나 저장 장치이다.
(예 : 백업 용도로 쓰는 저장소)
클라우드 컴퓨팅 환경은 다양한 조합의 사용을 제공한다.
따라서 위 유형들은 서로 독립적으로 운영되는 것은 아니다.
(IaaS를 제공하는 public cloud의 모습)
클라우드 컴퓨터 환경은 전통적인 운영 체제 + VMM + 클라우드 관리 도구로 이루어진다.
VMM이란 사용자의 프로세스가 실행되는 가상 머신을 관리하는
Virtual Machine Monitor를 뜻한다.
클라우드 관리 도구는 주어진 클라우드의 자원을 관리하고,
클라우드 구성요소에 대한 인터페이스를 제공한다.
이는 새로운 형태의 운영 체제라 볼 수도 있다.
Computing Environments - Real-Time Embedded Systems
실시간 임베디드(내장형) 시스템은 가장 일반적인 형태의 컴퓨터이다.
자동차 엔진, 공장 로봇, 각종 가전 제품에서 찾아볼 수 있다.
이런 제품들은 보통 특별한 작업만 수행한다.
따라서 운영 체제도 제한된 기능만을 제공한다.
이런 내장형 프로그램은 점점 확산돼가고 있다.
어떤 것들은 리눅스 운영 체제를 사용하고,
어떤 것들은 필요한 것만 하는 내장형 운영 체제를 사용하는 하드웨어 시스템이며,
어떤 것들은 운영 체제 없이 ASIC이라고 하는 응용전용칩을 갖는 하드웨어 장치이다.
내장형 컴퓨터는 대부분 실시간 운영체제를 가지고 있다.
실시간 운영 체제는 시간 제약이 있기 때문에
정해진 시간 내에 처리가 반드시 이뤄져야 한다.
그렇지 않으면 의미가 없다.
정리
운영 체제는 많은 일을 한다.
운영 체제는
- 프로세스 관리
- 메모리 관리
- 저장소 관리
- 대용량 저장소 관리
- 보호와 보안
의 일을 한다.
그리고 컴퓨팅 환경에는
- 전통적
- 모바일
- 분산 시스템
- 클라이언트-서버
- 피어-투-피어
- 가상화
- 클라우드 컴퓨팅
- 실시간 내장형
시스템들이 있다.