운영체제는 다양한 종류가 있는데 대표적으로 다음과 같은 종류가 있다.
●싱글 태스킹/멀티 태스킹(테스킹이 아니라 태스킹이라고 한다.):
이름에서 알 수 있듯이 싱글 태스킹 운영체제는 한번에 오직 하나의 프로그램만 실행할 수 있다. 반면, 멀티태스킹 운영 체제는 하나 이상의 프로그램이 동시에 실행할 수 있게 한다. 멀티 태스킹의 경우 선점형과 비선점형(협동형)으로 나누어 진다. 선점형 멀티태스킹은 각 프로그램마다 요구하는 메모리와 같은 자원을 타이머를 통해 돌아가면서 분배해준다. 스케줄러에 따라 차이가 나지만, 원론적으로는 시간을 정해 놓고 시간마다 선점이 일어나는데, 이 시간 단위를 퀀텀 혹은 슬라이스라 한다. 이 시간이 너무 짧으면 프로스세를 바꾸는데 소모되는 자원이 커지고, 너무 높으면 반응속도가 느려진다. 비선점형 멀티 태스킹은 프로그램이 CPU를 사용 할 때 프로그램이 연산이 모두 끝나 CPU가 더 이상 필요 없다고 알리면 CPU가 자원을 돌려받는 것이다. 쉽게 이해하자면, 컴퓨터가 한대라 돌아가면서 작업을 하는데 비선점형은 한 사람이 당장 컴퓨터로 필요한 작업을 끝내면 다음 사람에게 넘겨주는 것이고, 선점형은 시간을 정해놓고 시간이 다 되면 강제로 뺏어서 다른 사람에게 넘겨주는 것이다. 요즘 운영체제는 만약 비선점형을 쓰다가 한프로그램이 오류가 생겨 연산이 끝났다는걸 알리지 않으면 심각해지니 선점형을 사용한다.
●분산 운영 체제:
분산 운영 체제는 다른 컴퓨터들을 관리하고 이들을 마치 하나의 컴퓨터인 것처럼 보이게 만들어 준다. 네트워크화 된 컴퓨터들이 개발되면서 활성화되었다. 분산되는 연산들은 하나 이상의 컴퓨터에 수행된다.
●판형 운영 체제:
판형 운영 체제는 하나의 가상 머신 이미지를 게스트 운영 체제로 만드는 것을 가리킨다. 실행 중인 여러개의 가상 머신을 위한 도구로 이를 저장한다. 대형 서버 웨어하우스 환경에서 흔히 볼 수 있다.
●임베디드 운영 체제:
임베디드 운영 체제는 임베디드 컴퓨터 시스템(특수한 목적으로 만든 컴퓨터를 가리키며, 네비게이션, PDA, 디지털 카메라 등이 이에 해당한다.)에서 사용할 수 있게 설계되어 있다. 매우 크기가 작고 극히 효율적으로 설계되어 있다.
●실시간 운영 체제:
실시간 운영 체제는 특정한 짧은 시간 내에 이벤트나 데이터의 처리를 보증하는 운영 체제이다. 싱글 태스킹일 수도 있고, 멀티 태스킹일 수도 있으며, 멀티 태스킹의 경우 특수한 스케줄링 알고리즘을 사용한다.
사실 단일 사용자 운영체제/다중 사용자 운영체제도 있긴 한데 멀티태스킹과 비슷하여(필자가 이해를 못해서) 뺏다. 판형 운영체제도 같은 이유로 뺄려다가 위키에 있는 자료를 요약해서 썻다.(사실 판형 운영체제 자료가 위키밖에 없었다.)
실수 한 개를 입력받아 그대로 출력해보자.
(단, 입력되는 실수의 범위는 +- 1.7*10^-308 ~ 1.7*10^308 이다.)
소수점 이하 자리수가 11개 이하인 실수 한 개가 입력된다.
(단, 입력되는 실수의 범위는 +- 1.7*10^-308 ~ 1.7*10^308 이다.)
입력된 실수를 소수점 이하 11번째 자리까지 출력한다.
3.14159265359
3.14159265359
float 데이터형을 사용하면 3.4*10^-38 ~ 3.4*10^38 범위의 실수를 저장할 수 있다.
(float 로 선언하고 %f로 입력 받거나 출력하면 된다.)
하지만 이 범위를 넘는(더 작거나 더 큰) 실수를 저장하기 위해서는
보다 큰 범위를 저장할 수 있는 다른 데이터형을 사용해야 정상적으로 저장시킬 수 있다.
쉽게 생각하면, float 를 사용하는 것보다 double 을 사용하는 것이 좀더 정확하게 저장할 수 있다.
단, 실수 1개를 저장하기 위해 필요한 기억 공간이 2배로 늘어난다.
double 데이터형을 사용하면 1.7*10^-308 ~ 1.7*10^308 범위의 실수를 저장할 수 있다.
[예시]
double d;
scanf("%lf", &d);
printf("%lf", d);
** %.11lf 를 사용하면 소수점 이하 11자리까지 출력해준다.
파이썬은 애석하게도 소숫점이 열약하여 double이 존재하지 않는다. 정수부분따로 소수부분 따로 저장하는 것도 한 방법인 것 같다.
'Programming > Codeup.kr기초100제 && 컴퓨터 이야기' 카테고리의 다른 글
[기초-출력변환] 10진수 한 개 입력받아 8진수로 출력하기 && 데이터 (0) | 2016.11.23 |
---|---|
[기초-데이터형] 정수 한 개 입력받아 그대로 출력하기3 && Y2K, 2038년 버그 (0) | 2016.11.22 |
[기초-데이터형] 정수 한 개 입력받아 그대로 출력하기2 && 운영체제1 (0) | 2016.11.20 |
[기초-입출력] 년월일 입력받아 형태 바꿔 출력하기 && 프로그래밍 언어 종류 (0) | 2016.11.19 |
[기초-입출력] 시분초 입력받아 분 만 출력하기 && 윈도우 단축키 (0) | 2016.11.18 |