강의09 - kyagrd/introCS2018spring GitHub Wiki

옛날 옛적 이야기와 최신 이야기

운영체제와 유닉스 이야기를 좀 더 해보자

"터미널"(단말기)과 "터미널 에뮬레이터"

옛날옛적 (대략 50년대부터 70년대 중반) 터미널이란 "typewriter console"이었다. 이걸 "teletype monitor"라고도 했다. IBM 1620

https://www.pcworld.com/article/209224/displays/historic-monitors-slideshow.html#slide6

TV가 나온 한참 후에야 요즘에 우리가 "모니터"라고 부르는 종이에 글자를 출력하는 대신 화면에 글자를 보여주는 모니터가 대중화되었다. 그런 요즘 "모니터" 화면 안에서 마치 종이에 한줄한줄 찍히면서 위로 넘어가는 옛날옛적 터미널을 보여주는 것처럼 글자를 보여주고 또 입력도 받을 수 있는 장치 혹은 소프트웨어를 옛날옛적 터미널을 흉내낸다는 의미에서 "터미널 에뮬레이터"라고 부르게 되었다. 요즘에는 아예 줄여서 "터미널 에뮬레이터"를 그냥 "터미널"이라고 부르는 경우가 더 많다.

시분할(time-sharing) 멀티태스킹 운영체제 ITS

유닉스의 특징과 장점

  • 대화식 환경을 지원하는 쉘(shell)이라는 개념을 도입
  • 단순성, 일관성
    • 운영체제에서 관리하는 자원을 가능한 한 파일처럼 접근할 수 있도록 인터페이스를 제공한다.
    • 쉘에서 작고 단순한 프로그램을 여러 개 연결하여 사용 가능 (파이프 개념, 리다이렉션)
  • 멀티태스킹
  • 여러 명의 사용자를 지원
  • 계층적 파일 시스템
  • 여러 종류의 하드웨어로의 이식성 (어셈블리가 아닌 C로 작성됨)

이식성을 제외하고 나머지 다른 장점들은 상당부분 Multix의 영향을 받았다

Linux

리눅스는 대학생 시절 리누스 토발즈가 타넨바움 교수가 교육용으로 오픈소스로 개발한 유닉스와 비슷한 MINIX를 자기 집에 있는 개인용 386 컴퓨터에서 돌아가도록 커널을 뜯어고친 것을 오픈소스로 공유하면서 시작된 운영체제. 당시 에디터, 컴파일러 등등 다른 거 만드느라 바빴던 GNU 프로젝트에서 큰 관심을 받아서 자유소프트웨어 진영에서 가장 많이 사용하는 운영체제의 핵심이 되었다. 하지만 리누스 본인은 GNU 라이센스와 같은 카피레프트를 포함한 자유소프트웨어 운동의 모든 철학에 완전히 동의하는 것은 아니며 오픈소스로 SW개발 프로젝트를 진행하는 것은 그것이 성공적인 SW 개발방법론이라고 생각하기 때문이라고 한다. 리누스는 또한 git의 개발자이기도 하다. 커널 개발 프로젝트 소스코드를 버전관리하는 기존의 cvs, svn 과 같은 도구가 마음에 들지 않아 분산버전관리 시스템을 직접 개발함.


메이커 무브먼트

2015년 매일경제TV에서 소개한 내용 http://vip.mk.co.kr/news/view/21/31/52418.html

싱글 보드 마이크로컨트롤러와 싱글 보드 컴퓨터

  • 아두이노 - 대표적인 싱글 보드 마이크로컨트롤러
    • 센서, 모터, LED, LCD 등을 바로 연결해 운영체제 없이 하드웨어를 직접 제어하는 펌웨어(firmware)를 프로그래밍하여 활용
    • 누구나 쉽게 특히 어린이나 청소년들도 전자 디바이스를 쉽게 제어할 수 있는 간편한 하드웨어 플랫폼을 제공할 목적
    • 오픈소스 하드웨어 프로젝트
    • 최근에는 클라우드 기반 아두이노 개발 지원 환경을 제공하기 시작
  • 라스베리파이 - 대표적인 싱글 보드 컴퓨터
    • 운영체제를 탑재한 저가 소형 컴퓨터
    • 범용 컴퓨터 용으로 개발된 응용 프로그램과 라이브러리 활용 가능
    • 센서, 모터 등을 직접 연결해 제어하기도 하고 아두이노와 같은 마이크로컨트롤러를 한 단계 위에서 제어하는 방식으로도 활용

Autodesk Circuits

https://www.tinkercad.com/circuits

웹기반 아두이노 포함 전자회로 시뮬레이터 제공 (교육용 환경을 염두에 두고 만들어짐)