[운영체제] 필기 1

이 글은 2017년 1학기에 서울시립대학교에서 수강하였던 운영체제 수업의 필기 내용입니다.

들었던 수업 내용을 복습할 겸 포스팅합니다.

컴퓨터란

“A computer is a device that can be instructed to carry out an arbitrary set of arithmetic or logical operations automatically.”

“Computers do specific operations or calculation.(called program.)”

Computer란 Compute + er로, 어떠한 연산(대표적으로 사칙연산, 쉬프트 연산 등을 꼽을 수 있다)을 하는 장치입니다. 1

컴퓨터는 사용자에 의해 기능을 정의하는 프로그램이라는 일련의 작업에 의해 구동됩니다. 컴퓨터는 보통 일반적인 용도로 사용되고, 사용자는 컴퓨터를 프로그래밍 할 수 있습니다. (보통 이를 Hackable하다고 부릅니다) 처음에는 컴퓨터가 특정 연산에만 사용되었지만, 이제는 정보를 처리하고 저장하는 등 수많은 곳에 사용됩니다.

컴퓨터와 계산기가 다른 점. (Homework)

컴퓨터와 계산기는 연산이라는 비슷한 기능을 가지고 있습니다. 그러나 우리는 계산기를 단순히 값을 넣고 함수를 정의하고 사용하는 등의 간단한 기능에만 사용하지만, 컴퓨터는 범용적인 목적으로 만들어졌습니다. 컴퓨터는 우리가 프로그램 가능하며, 그 프로그램들을 쉽게 배포할 수 있습니다. 또한 배포된 다른 사람들의 프로그램도 쉽게 사용가능하며 결과적으로 컴퓨터가 많은 기능을 가지게 됩니다.

즉, 계산기는 오직 계산만 가능하지만, 컴퓨터는 사용자에 따라 수많은 것들을 할 수 있습니다. 컴퓨터에게는 사용자의 역할이 중요합니다.

기본 이론

Binary number/code, Decimal, Octal

  • Binary: 바이너리는 0과 1만 사용합니다. 프로그래밍 언어에서 suffix로 b가 붙거나, prefix로 0b가 붙는 경우를 바이너리라고 볼 수 있습니다. 많은 나라들이 이와 비슷한 개념을 가지고 있는데, 대표적으로 동양에서의 음/양을 생각할 수 있습니다. 2
  • Decimal: decimal은 우리가 보통 사용하는 0~9까지의 Number System(10진수)입니다.
  • Octal: Octal 시스템은 0~7까지의 Number System(8진수)입니다. 8진수는 2진수로 쉽게 바꿀 수 있고, 또 그 반대도 쉽게 가능합니다.

Why binary?

먼저, 컴퓨터의 아키텍처 상 무언가의 State를 나타내는 데에 0과 1(on/off)로 나타내는 것이 효과적입니다. 그 이유는 간단하게 스위치를 사용하기 때문입니다. 그러나 0과 1만으로도 자리수를 확장시켜 수많은 수를 나타낼 수 있기 때문에 기존의 숫자 체계와 같이 사용가능합니다.

TED의 이 비디오가 왜 컴퓨터가 2진수를 쓰는지에 대해 잘 설명해주고 있습니다.

Bit

Binary Digit를 줄인 말.

교수님이 아래처럼 말씀하셨다.

비트는 한 자리수를 말한다. 만약 우리가 10진수를 컴퓨터에 사용하였다면, 10진수 한 자리수가 비트가 되었을 것이다. (그리고 이름 또한 dit정도로 바뀌었을 것이다.)

위키피디아에서는 비트가 컴퓨팅에서 기본적인 정보의 단위라고 한다.

Byte

바이트는 8비트로 이루어져있다. 바이트는 digital information의 단위로 대부분 8비트로 이루어져있다. 바이트는 역사적으로 하나의 글자를 인코딩하기 위해 만들어졌었다.(ASCII와 밀접한 관련이 있는데, ASCII가 8비트이기 때문이다) 그것이 메모리들이 Byte-Addressable한 이유이다.

Word

컴퓨터에서 프로세서의 데이터 단위인데, CPU가 처리하는 명령어의 길이가 64비트면 word가 64비트이란 말이다. 요즘은 64비트가 흔하므로 64비트가 한 word라 할 수 있겠다.

여기서 내가 헷갈린 점이, 나는 intel x86 아키텍쳐 기반의 어셈블리어를 공부했었다. 해당 어셈블리어 문법에서는 word가 2바이트, dword가 4바이트, qword가 8바이트인데, 나는 당연히 word가 16비트 고정인줄 알고 있었다. 하지만, 이는 정확한 이유는 모르지만 16비트, 32비트, 64비트끼리의 호환성 때문인 것으로 보인다.

또한 n-bit computing이란 단어도 들었는데, 이는 From the software perspective, 64비트의 가상 메모리 주소를 사용하는 컴퓨팅을 말한다.3

EBCDIC, ASCII, Unicode

셋 모두 글자를 담는 방법으로 볼 수 있다. (인코딩/디코딩 방식)

EBCDIC은 Extended Binary Coded Decimal Interchange Code의 약어로, IBM mainframe에서 사용되기 위해 만들어진 8-bit 문자열이다.4

EBCDIC은 ASCII 코드와 같은 목적인데, EBCDIC은 특정한 알파벳들 사이에 비정상적인 값의 차이가 있었다. (za의 차이가 25가 아니라 40이었다) 그래서 알파벳을 쉽게 반복시키기도 어려웠다. 이게 ASCII가 더 유명해진 이유이다.

ASCII는 American Standard Code for Information Interchange의 약어이다. 문자열 인코딩 표준으로 여러가지 장치에서 사용된다. 현재 많은 문자열 인코딩 방식이 추가적인 문자들을 제공함에도, 아스키 코드 기반이다. 5

ASCII는 알파벳을 기반으로 해서 128개의 문자를 가진 7-bit 길이의 문자열이었는데, 나중에 영어가 아닌 문자들을 위해서 8비트로 확장되었다고 한다. Extended ASCII라고 하고 이것을 이용해서 우리가 한글을 3 byte 길이로 나타내었다고 한다.

Unicode는 영어 문화권이 아닌 사람들을 위해 만들어졌고, UTF-8은 가장 많이 알려진 유니코드이다.

Boolean Algebra

수학과 논리학에서 Boolean Algebra는 Algebra의 일종으로 값으로는 True와 False만을 이용하고, 연산자로And, Or, Not, Exclusive Or, … 등을 이용한다.

참고자료

  1. https://en.wikipedia.org/wiki/Computer 

  2. https://en.wikipedia.org/wiki/Binary_number 

  3. https://en.wikipedia.org/wiki/64-bit_computing 

  4. https://en.wikipedia.org/wiki/EBCDIC 

  5. https://en.wikipedia.org/wiki/ASCII 

April 21, 2018 에 작성
Tags: operating system 대학