cp (CoPy)

 파일을 복사할 때는 ‘cp’ 명령을 이용한다. 아래 표에서 file~ 로 시작하는 것은 파일명을, dir~로 시작하는 것은 디렉토리명을 나타낸다.


[표 1] cp 명령어의 용례들

cp fileSrc fileDest

fileSrc를 fileDest로 (이름을 바꿔서) 복사한다.

cp fileSrc dirDest

fileSrc를 dirDest 안에 (같은 이름으로) 복사한다.

cp fileSrc dir/fileDest

fileSrc를 dir 디렉토리 밑의 fileDest로 (이름을 바꿔서) 복사한다.

cp -r dirSrc dirDest

디렉토리 안의 내용을 모두 복사한다.(dirDest가 없다면 새로 생성한 후 복사한다.)


mv (MoVe)

 파일이나 디렉토리의 이동시킬 때 mv 명령을 사용하는데 이름을 바꿀 때에도 사용한다.


[표 2] rm 명령어의 용례들

mv fdSrc fdSest

화일(디렉토리)의 이동. 이름을 바꾸는 데도 사용된다.

mv file dir

file을 dir 안으로 옮긴다.

mv file1 file2

file1을 file2로 이름을 바꾼다.

mv file1 dir/file2

file1을 dir로 옮기면서 file2로 이름도 바꾼다.




Posted by 살레시오
,

mkdir 명령어

 디렉토리를 생성하는 명령어가 ‘mkdir’ 이다. 바로 뒤에 디렉토리 명을 옵션으로 주어 생성할 수 있다.


[표 1] ‘mkdir’ 명령의 용례들

mkdir dirName

dirName 이라는 디렉토리를 현재 위치에 생성

mkdir dir1 dir2 dir3

동시에 여러 개의 디렉토리를 생성한다.

mkdir -p dir1/dir2/dir3

-p 옵션을 사용하면 중첩된 디렉토리를 한 번에 생성해 준다.


rm (ReMove)

 파일이나 디렉토리를 삭제할 때는 rm 명령어를 이용한다.


[표 2] ‘rm’ 명령어의 용례들

rm fileName1 fileName2

파일(들)을 삭제 (디렉토리는 이 명령어로 지울 수 없음)

rm *

현재 디렉토리의 모든 파일 삭제

rm a*

a문자로 시작하는 모든 파일 삭제

rm -r dir1

dir1 디렉토리 및 그 안에 포함된 파일과 디렉토리를 모두 삭제 (r은 recursive 의 의미임)

rm -r ab*

ab 로 시작하는 파일과 디렉토리(하위도 포함)을 모두 삭제

rm -f

강제 삭제 (데비안/우분투에서는 기본 옵션임. 즉 rm -r 은 rm -rf 와 같은 명령임)

rm -i

삭제 전에 확인 과정을 거친다.



이 명령어를 사용할 경우에는 주의를 기울여야 한다. 어떤 배포판에서는 확인 과정을 거치지 않고 바로 삭제가 이루어지기 때문이다. 만약 실수로 시스템 파일들을 삭제하게 되면 돌이킬 수 없게 된다.


rmdir (RmMove DIRectory)

디렉토리를 삭제하는 명령어로 rmdir 이  있다. 하지만 이 명형어는 비어있는 디렉토리만을 제거할 수 있다.


rm dir1


위의 명령은 만약 dir1이 비어있다면 삭제되지만 그렇지 않다면 에러를 발생시킨다. 만약 중첩된 디렉토리를 모두 삭제하려면 -p 옵션을 주면 된다.


rm -p dir1/dir2/dir3


위 명령은 dir1 과 그 하위 디렉토리를 모두 삭제한다. 단, 이 경우에도 모든 디렉토리가 비어있어야 한다.



Posted by 살레시오
,

 ‘cd’ 명령은 디렉토리를 이동할 때 사용되는 명령어이다. ‘cd’ 명령을 사용하려면 먼저 다음 문자들의 의미를 잘 숙지하고 있어야 한다.


[표 1] 특정 디렉토리를 의미하는 특수문자들

~(틸다)

현재 사용자의 홈디렉토리를 나타냄.(만약 사용자가 pi 라면 /home/pi 임.)

. (점 하나)

현재 디렉토리

.. (점 둘)

현재에서 한 단계 상위 디렉토리

/

(단독으로 사용되면) 루트 디렉토리


기본적인 사용법은  다음과 같다.


cd [상대경로|절대경로] : 지정된 경로로 이동.


즉, cd 다음에는 상대경로 혹은 절대 경로가 오게 된다. 절대 경로는 / 로 시작되는 경로이고 상대 경로는 현재 위치를 기준으로 한 목적지 디렉토리 경로이다.


[표 2] ‘cd’ 명령의 용례들

cd /

루트 디렉토리로 이동 (절대 경로)

cd /home/pi

/home/pi 로 이동 (상대 경로)

cd .

변함 없음. (현재 디렉토리로 이동이므로)

cd ..

한 단계 상위 디렉토리로 이동.

cd ../..

두 단계 상위 디렉토리로 이동.

cd ../test4

상위 디렉토리의 밑의 test4 디렉토리로 이동.

cd 혹은 cd ~

사용자의 홈디렉토리로 이동

cd -

직전의 디렉토리로 되돌아간다.


한 가지 팁은 디렉토리나 파일명을 입력할 때 선행하는 한두 문자를 입력한 후 tab 키를 누르면 자동으로 완성시켜주는 기능이 있으니 편리하게 사용할 수 있다.




Posted by 살레시오
,

 리눅스 시스템에 전원을 인가한 후 부팅이 끝나면 아이디와 비밀번호를 입력하여 로그인을 할 수 있다. 로그인한 후에는 사용자가 명령을 입력하여 수행할 수 있다. 또는 gui환경이 시작되었다면 터미널(terminal) 창을 열어서 명령어를 입력할 수 있다. 터미널을 실행했을 때 명령을 대기하는 프롬프트의 끝이 $ 라면 현재 사용자를, #로 끝나면 슈퍼 유저(super user, 시스템 관리자를 의미)를 나타낸다. 홈디렉토리는 ~ (틸드) 로 표시한다.


~$_ : 현재 사용자의 명령 대기

~#_ : 슈퍼 유저(시스템 관리자의) 명령 대기


예를 들어 터미널을 실행시켰을 때 다음과 같은 글이 처음에 뜨고 맨 우측에 캐롯(caret)이 깜빡이게 된다.


pi@raspberrypi:~$_


여기서 pi는 현재 사용자의 이름, reapberrypi는 컴퓨터의 이름, 콜론 다음에는 현재 디렉토리, 그리고 $는 쉘 프롬프트(shell prompt)로서 사용자의 명령을 대기하고 있다는 것을 의미한다.


 다음 그림은 데비안 리눅스의 X윈도 터미널을 실행시킨 모습이다.



터미널을 종료하려면 exit 명령을 입력하거나 ctrl-D 키를 누르면 된다.


 캐럿(caret)을 이동시키는데 있어서 좌우 방향키는 한 칸씩 이동하고 [BACKSPACE]는 직전 문자를 하나씩 지우면서 이동, [DEL]키는 직후의 문자를 지움,   [HOME]은 행의 시작으로 , [END]는 행의 끝으로 이동시킨다. 이러한 키들은 문서를 편집하는 프로그램에서 보통 공통적으로 사용되므로 그리 혼동되지 않을 것이다. 다음 표는  터미널에서 사용할 수 있는 그 외의 키와 동작을 요약한 것이다.


키 혹은 키조합

기능

상하 방향키

Ctrl+R

과거에 입력했던 명령들을 입력 순으로 하나씩 불러온다.

과거 명령어 검색

[Shift]+[PageUp]

[Shift]+[PageDown]

터미널에서 화면 밖으로 넘어간 출력 내용을 다시 본다. ( shift 키와 같이 눌러야 한다는 점에 유의.)

Tab

명령어나 파일이름의 자동 완성.

Tab Tab

명령어나 파일이름의 자동 완성 후보 리스트를 표시

Ctrl+C

Ctrl+Z

프로그램 실행을 중단하고 프롬프트를 표시.

프로그램의 실행을 잠시 멈추고 빠져나감.

Ctrl+L

현재의 터미널 표시 내용을 초기화.

Ctrl+D, exit, logout

터미널 종료


 윈도우 OS의 조작에만 익숙해져 있다면 리눅스 터미널에서 명령을 입력하는 방식이 처음에는 조금 어려워 보일 수 있다. 리눅스에서도 GUI 환경을 이용하면 윈도우와 비슷하게 조작을 할 수는 있으나 리눅스 시스템을 다루는데 있어서 터미널 명령에 익숙해지는 과정은  거의 필수적이라고 할 수 있다. 그리고 조금만 익숙해 지면 이 방식이 더 효율적이라는 것을 알게 될 것이다.


리눅스 강좌 전체 목록 >>>


c{linux},n{ln0007}

'맥,리눅스,윈도' 카테고리의 다른 글

리눅스의 쉘 명령어 : cd 명령어  (0) 2015.06.02
리눅스 쉘 명령어 : pwd/ls  (0) 2015.06.02
리눅스의 파일 시스템  (0) 2015.05.16
리눅스의 커널(kernel)과 쉘(shell)  (0) 2015.05.16
리눅스(Linux) 소개  (0) 2015.05.16
Posted by 살레시오
,

 윈도우에서 폴더(folder)라고 부르는 파일의 저장 공간을 리눅스에서는 디렉토리(directory) 라고 하며 최상위 디렉토리를 루트(root) 라고 한다. 루트는 ‘/’ (forward slash) 기호로 표기되는데 이 기호는 하위 디렉토리를 나타내는 데에도 사용된다. (윈도우의 경우 폴더를 구분하는데 백워드 슬래쉬 ‘\’ 기호를 사용하므로 처음에는 혼동하기 쉽다.)


  • 디렉토리 (directory) - 파일 저장 공간

  • 루트(root) 디렉토리 - 리눅스 파일 시스템의 최상위 경로

루트 밑에 다양한 디렉토리들이 있는데 리눅스 OS라면 대체로 표준으로 정해진 것들이 있다. 몇 가지 예를 들면 다음 표와 같다.


표 1. 리눅스의 표준 디렉토리 예

/bin

모든 사용자가 실행할 수 있는 기본 명령어와 프로그램

/boot

리눅스 커널 이미지, 부트로더

/dev

시스템의 각종 물리적인 장치를 나타내는 특수 파일

/etc

시스템/x11의 구성 설정 파일 등

/home

사용자의 홈 디렉토리

/root

관리자 홈디렉토리

/lib

프로그램의 라이브러리

/proc

실행 중인 프로세스들과 OS에 대한 정보

/usr

사용자 명령어, 시스템 프로그램, 라이브러리 루틴

/sbin

부팅 관련 명령어

/tmp

임시 파일을 저장하는 공간(시스템 시동시 내용이 모두 삭제됨)

/var

메일, 시스템 로그 및 스풀파일, 웹서비스 관련


이중에서 /home 디렉토리는 윈도우의 “c:\사용자”와 유사한 디렉토리로서 만약 어떤 이용자의 아이디가 pi 라면 /home/pi 디렉토리에 이 사용자가 생성하는 파일들이 저장되게 된다.


리눅스에서는 데이터를 읽을 수 있는 자원 또는 데이터를 쓸 수 있는 대상은 모두 파일로 간주된다. 따라서 디스크에 저장된 전자 정보인 파일뿐만 아니라 입출력 장치(device)들도 모두 파일처럼 사용될 수 있다. 장치를 나타내는 특수 파일은 물리적인 장치에 대한 내부적인 표현으로 키보드(입력 자원, stdin), 모니터(출력 자원, stdout), 프린터 등이 있으며 모두 파일처럼 사용할 수 있다. 디렉토리 자체도 일종의 파일이며 다른 파일들을 조직하고 사용하는데 필요한 정보를 디스크와 같은 저장장치에 저장한 것이다.


리눅스 강좌 전체 목록 >>>


c{linux},n{ln0006}

Posted by 살레시오
,

 리눅스는 커널(kernel)이라 불리는 하드웨어를 직접 제어하는 부분과 그 위에서 커널에 명령을 주는 하나 이상의 쉘(shell)로 구성되어 있다. 커널은 하드웨어를 직접 제어하는 리눅스의 핵심부로서 쉘에서 임무를 받아서 수행한다. 쉘은 명령어 기반 인터페이스인데 이것을 통해서 사용자는 리눅스 OS와 상호 작용을 하게 된다.


  • 커널(kernel) - 리눅스 운영체제의 핵심으로서 프로세스(process) 관리, 메모리 관리, I/O 시스템 관리, 파일 시스템 관리 등을 수행.

  • 쉘 (shell) - 사용자와 내부 커널 사이의 인터페이스 역할 (명령어 해석기)


[그림 1] 리눅스 OS의 구성 계층도


리눅스 커널은 1만 줄 이상의 C 프로그램과 1000여 줄의 어셈블리어로 구성되어 있어서 이식성이 좋다고 한다. 커널은 리눅스가 부팅할 때 메모리로 로딩된다.

[그림 2] 커널과 쉘, 유틸리티, 응용프로그램의 관계도


 그림 2에서 도시된 대로 사용자(user)는 (보통은 키보드로) 명령을 입력하면 쉘에서 그 명령을 해독하여 커널에 전달한 후 그 결과를 출력하게 된다. 쉘을 사용하면 커널단의 복잡한 동작 방식을 알 필요 없이 쉘 상의 인터페이스로 시스템 자원들을 쉽게 관리할 수 있다. 이것이 바로 쉘이 탄생한 이유이기도 하다.


 리눅스에서 쉘은 여러 종류가 있고 쉘마다 특징이 있다. 쉘은 본쉘(bourne shell, bash), C쉘(c shell, csh), 콘쉘(korn shell, ksh)이 있으며, 대부분의 리눅스 시스템에서 본쉘을 사용하고 있다. 본쉘은 쉘프로그래밍(도스로 치면 bat 파일로서 쉘명령어들의 모음)이 쉬운 반면 다른 쉘보다는 사용자와 상호 작용이 부족하다는 단점이 있다.

'맥,리눅스,윈도' 카테고리의 다른 글

리눅스의 터미널 기본 입력  (0) 2015.05.16
리눅스의 파일 시스템  (0) 2015.05.16
리눅스(Linux) 소개  (0) 2015.05.16
자유 소프트웨어 재단 (FSF)의 설립  (0) 2015.05.16
유닉스(unix) 소개  (1) 2015.05.16
Posted by 살레시오
,

 1991년에 핀란드의 대학생 리누스 토발스(Linus Torvalds)는 ‘리눅스’라고 이름지은 운영체제 커널을 개발하기 시작하였다. 리눅스라는 이름도 재밌게도 ‘Linux Is Not UniX’의 글자들을 딴 것이다. (GNU와 유사한 일종의 말장난) 이 커널은 자유로이 수정될 수 있고 매우 유용한 운영체제를 만들기 위해 FSF 산물과 다른 컴포넌트들 (특히 BSD 컴포넌트들의 일부와 MIT 의 X 윈도우 소프트웨어)과 병합될 수 있었다.


[그림 1] 리누스 토발스


 근래에 들어서는 쉬운 설치, 보다 많은 하드웨어 지원, KDE나 GNOME같은 GUI 데스크탑까지 지원 함으로서 일반 컴퓨터에 익숙한 사용자들이 집에서 PC에 설치 하기에도 무리가 없다.


 리눅스 공동체의 여러 조직들은 사용할 수 있는 컴포넌트들을 다르게 조합하였는데 각 조합은 ‘배포판’으로 부른다. 널리 알려진 배포판으로는 데비안(Debian), 우분투(ubuntu), 민트(mint),  레드햇(Red Hat), 페도라 등등이 있다. 인터넷으로 접속하는 많은 서버들의 운영체제가 리눅스이고 안드로이드와 같은 운영체제 역시  리눅스 기반으로 만들어졌으므로 리눅스는 우리 생활 전반에 보이지 않게 사용되고 있다고 할 수 있다.



[그림 2] 리눅스 배포판의 종류들


 리눅스의 특징은 다음과 같다.


  • 다중  플랫폼 지원. (인텔CPU, ARM, Sun Sparc, PowerPC 등)

  • 다양한 하드웨어 장치 지원.

  • 이식성이 뛰어남. (C언어 기반으로 프로그래밍과 포팅이 용이)

  • 다중 사용자(multi-user)가 동시에 사용할 수 있는 환경 제공.

  • 다중 작업(multi-tasking) 환경 제공.

  • 트리 형태의 계층적으로 구성된 파일 시스템.

  • 풍부한 소프트웨어 개발환경 제공 - 거의 모든 프로그래밍 언어 지원.

  • 강력한 네트워킹 기능 제공.

  • 오픈소스이고 무료로 제공되어 사용하는데 아무런 제한이 없다.


특히 리눅스는 서버(server) 영역과 임베디드(embedded) 시스템 영역에서 막강한 영향력을 가지며 모바일 운영체제와 최근에는 데스크탑 운영체제로도 주목을 받고 있다. 개인 PC용으로는 우분투(ubuntu)와 민트(Mint)가 널리 알려져 있으며  소형 임베디드 시스템에서 상대적으로 가벼운 데비안(Debian)이 많이 사용된다.


 Linux는 이미 검증받은 안정성으로 인하여 PC, 서버, 모바일기기 등의 OS로 널리 사용되고 있으나 초보자들이나 혹은 윈도같은 특정 GUI환경에만 익숙한 사용자들이 진입하기에는 다소 어렵게 느껴질 수 있다.


리눅스 강좌 전체 목록 >>>


c{linux},n{ln0004}

'맥,리눅스,윈도' 카테고리의 다른 글

리눅스의 파일 시스템  (0) 2015.05.16
리눅스의 커널(kernel)과 쉘(shell)  (0) 2015.05.16
자유 소프트웨어 재단 (FSF)의 설립  (0) 2015.05.16
유닉스(unix) 소개  (1) 2015.05.16
운영체제 개요  (0) 2015.05.16
Posted by 살레시오
,

 스톨만(R. Stallman)은 1971년 MIT 인공지능연구소 연구원 시절 처음으로 소프트웨어를 접했다. 그가 속한 연구팀은 PDP-10 이라는 컴퓨터에서 동작하는 시분할 운영체제(OS)를 어셈블리어로 개발했다. 그 당시만 해도 누구나 그 OS의 소스코드를 얻을 수 있었으며 수정하여 사용하는데 제약이 없었다.


 하지만 이후에 컴퓨터 제작사에서 제공하는 새로운 운영 체제를 사용하는데 있어서 이러한 자유는 더이상 허락되지 않았다. 상업적인 회사가 제공하는 하드웨어를 작동시키는 소프트웨어를 사용하는데 있어서 그 소스 코드를 보거나 수정할 수 없으며 그러한 일을 하지 않겠다는 합의서(비밀 유지 합의서)에 서명을 해야만 했다. 특히 같은 연구소에서 교류를 하던 연구원들이 심볼릭스(symbolics)라는 회사를 차리고 기존의 자유 소프트웨어를 그들만의 독점 소프트웨어로 바꾸는 작업을 적극적으로 시도했다.


 결국 1985년 3월에 스톨만은 ‘GNU 선언문’을 발표했다. GNU(그뉴)란 `GNU는 유닉스가 아니다'를 의미하는 영어 표현인 `Gnu is Not Unix'를 구성하는 단어들의 첫자를 따서 만든 약어이다. GNU는 유닉스와 완벽하게 호환되는 소프트웨어 시스템의 이름이며, 원하는 모든 사람이 자유롭게 사용할 수 있도록 만들어진 것이다. 이는 유닉스에 대항하여 자유로운 대안을 만들기 위한 스톨만의 의지와 동기를 역설한 것이다.


FSF의 창시자 Richard Stallman


 그리고 얼마 후 그는 비영리 기과인 자유 소프트웨어 재단(FSF)를 설립했다.  1989년에는 ‘일반 공동 사용 허가서(GPL)’ 내에 카피레프트(copyleft)의 개념을 적용하였다. GPL은 가장 널리 알려진 강한 카피레프트 사용 허가이며, 이 허가를 가진 프로그램을 사용하여 새로운 프로그램을 만들게 되면 파생된 프로그램 역시 같은 카피레프트를 가져야 한다. 이러한 철학에서 GPL은 컴퓨터 프로그램을 이용하는 사람에게 자유 소프트웨어의 권한을 누리며 카피레프트를 사용함으로써 그러한 자유가 보전되고, 심지어는 그러한 작업이 변형되거나 추가될 수도 있는 자유마저 있다.


카피레프트(copyleft)란 독점적인 의미의 저작권(copyright)에 반대되는 개념이며, 저작권에 기반을 둔 사용 제한이 아니라 저작권을 기반으로 한 정보의 공유를 위한 조치이다. 카피레프트를 주장하는 사람들은 보통, 지식과 정보는 소수에게 독점되어서는 안 되며, 모든 사람에게 열려 있어야 한다고 주장한다. 카피레프트는 정보를 사용할 권리를 2차저작물의 저작자에게 전달하며, 또 이러한 권리의 전달을 막지 않을 것을 주요 요건으로 삼고 있다.



 스톨먼은 자유로이 사용될 수 있고, 읽혀질 수 있고, 수정될 수 있고, 재배포될 수 있는 소프트웨어의 의미로 ‘free’를 사용했다. FSF는 C컴파일러(gcc), 텍스트 에디터 (emacs)와 많은 기본적인 도구를 포함해 엄청나게 많은 유용한 컴포넌트들을 성공적으로 구축하였다.


 그러나 1990년대 FSF는 OS 커널을 개발하는데 어려움을 겪었으며 커널이 없다면 그들의 나머지 소프트웨어들은 소용이 없었을 것이다. (커널 - 쉘이나 응용프로그램에 기본적인 서비스를 제공하는 OS의 핵심적인 부분)





'맥,리눅스,윈도' 카테고리의 다른 글

리눅스의 파일 시스템  (0) 2015.05.16
리눅스의 커널(kernel)과 쉘(shell)  (0) 2015.05.16
리눅스(Linux) 소개  (0) 2015.05.16
유닉스(unix) 소개  (1) 2015.05.16
운영체제 개요  (0) 2015.05.16
Posted by 살레시오
,

유닉스(UNIX)에 대해서 이해하기 전에 40여년 전의 시간으로 돌아가서 그 시대의 기술에 대해서 알아볼 필요가 있다. 그 시대의 컴퓨터는 집을 꽉 채우거나 심하면 운동 경기장만한 크기를 가지고 있었다. 크기보다 더 큰 문제는 컴퓨터마다 운영체제(OS)가 달랐다는 점이다. 특정 시스템에서 돌아가는 소프트웨어는 반드시 커스터마이즈 과정을 거쳐야 했으며 한 시스템에서 돌아가는 프로그램은 다른 시스템에서는 동작하지 않았다. 또한 어떤 시스템으로 작업을 수행할 수 있는 기술자가 다른 시스템을 다룰 수 있는 것이 아니었다.


또한 컴퓨터는 굉장히 고가의 기기였으며 한 시스템을 구입하여 사용자들이 작동법을 익혔다 하더라도 추가적인 비용이 드는 구조였다. 컴퓨팅 파워를 사용하기 위해서는 막대한 비용이 소요되었다. 기술적으로 진보가 이루어지지 않았으므로 그러한 사이즈의 컴퓨터를 가지고 작업을 이후로도 십 몇년 동안이나 더 해야만 했었다.


 그러던 중 1969년에 AT&T의 Bell 연구소에 근무하는 데니스리치(Dennis Ritchie)를 포함한 기술자팀이 이러한 호환성 문제를 해결하기 위해서 작업을 시작하였다. 이들은 MULTICS라는 운영 체제(1964년에 개발된 시분할 개념을 도입한 초기 운영 체제)의 여러 개념을 구현해 보기 위해 켄톰슨(Ken Thomson)과 함께 PDP-7이라는 컴퓨터 시스템을 이용하여 새로운 운영 체제를 만들기 시작하였다.



[그림 1] Dennis Ritchie with the PDP-7


이들이 개발하는 운영체제는 다음과 같은 사항들을 지향했다.


  1. 간결하면서도 명쾌하다.

  2. 어셈블리어 대신 C언어로 작성한다.

  3. 코드를 재사용할 수 있어야 한다.


벨연구소 개발자들은 그들의 프로젝트를 “UNIX”라고 명명했으며 1972년에 PDP-11/45기종으로 초기의 유닉스를 이식하면서 OS를 C 언어로 다시 작성하였다.


코드의 재사용성은 매우 중요한 개념이다. 그 당시 시판되는 모든 컴퓨터 시스템들은 그 시스템에서만 사용되는 프로그램을 이용하였다. 반면 유닉스는 커널(kernel)이라고 불리는 작은 부분의 시스템 적용 코드만 요구되었다. 유닉스 운영 체제와 모든 기능들은 이러한 커널 위에 구축되었으며 고수준 언어인 C언어로 개발되었다. C언어 자체가 유닉스 시스템을 개발하기 위한 목적으로 만들어졌다. 이러한 새로운 기술로 인해 서로 다른 컴퓨터 시스템을 동작시키는 운영 체제가 훨씬 더 용이하게 만들어 질 수 있었다. 더불어서 C언어도 대표적인 프로그래밍 언어로 자리매김되었다. 그리고 1979년에 유닉스 7번째 버전 V7 이 발표되었으며 이는 모든 현존하는 유닉스 시스템의 대부격이 되었다.


소프트웨어 판매사들은 이러한 신기술을 재빨리 채용하여 추가적인 노력없이도 열 배 이상의 소프트웨어를 팔아치울 수 있었다. 사용자는 시스템이 바뀌어도 추가적인 교육이나 노력없이도 작업을 계속할 수 있었다. 유닉스는 서로 다른 기종에 같은 사용자 환경을 성공적으로 제공하였다.


그 다음 20여년이 지나는 동안에도 유닉스 개발은 계속되었다. 다양한 기능이 추가되었고 하드웨어나 소프트웨어 판매사들은 그들의 제품에 유닉스를 지원하게 되었다. 초창기에는 유닉스는 메인프레임(mainframe)이나 미니컴퓨터(minicomputer - 서버나 워크스테이션)에 적용되었다. (여기서의 미니컴퓨터는 중소형 시스템을 지칭하는 것이고 현재의 PC는 마이크로컴퓨터에 해당된다.) 일반인이 유닉스 시스템을 접하려면 대학 연구소에서 일하던가 정부 기관이나 대형 금융회사 같은 곳에서 일을 해야만 했다.


 유닉스가 유명해지자 유닉스를 모방한 많은 운영체제들이 나타났는데, 이들을 표준화하기 위해 POSIX라는 표준이 등장했다. POSIX 표준을 만족하는 것들을 유닉스 계열 운영체제라고 한다. 리눅스, Mac OS X가 대표적인 유닉스 계열 운영체제이다. 대부분의 리눅스 배포판들은 POSIX의 거의 모든 상세스펙을 따르고 있다.


소형 컴퓨터들이 그 이후에 개발되었으며 80년대 후반에는 많은 사람들이 가정용 컴퓨터(PC)를 갖게 되었다. 그 시점에서는 PC를 위한 몇몇 유닉스가 있었지만 무료로 자유롭게 사용할 수 있는 운영 체제는 없었고 속도가 매우 느렸다. 그래서 많은 이들인 MS DOS 나 윈도우즈3.1 을 사용하였다.





'맥,리눅스,윈도' 카테고리의 다른 글

리눅스의 파일 시스템  (0) 2015.05.16
리눅스의 커널(kernel)과 쉘(shell)  (0) 2015.05.16
리눅스(Linux) 소개  (0) 2015.05.16
자유 소프트웨어 재단 (FSF)의 설립  (0) 2015.05.16
운영체제 개요  (0) 2015.05.16
Posted by 살레시오
,

 운영체제(Operating System, 이하 OS)는 사용자와 컴퓨터 하드웨어 사이의 소프트웨어 인터페이스를 지칭한다. OS는 프로그램 실행을 제어하고 다양한 리소스들(CPU, 메모리, 디스트, 디스플레이, 키보드, 마우스 등등)을 관리한다.


[그림 1] OS의 개념도


 운영 체제는 어디에나 있다. 주변에서 일상적으로 접할 수 있는 OS로는 다음과 같은 것들이 있다.


  • 윈도우즈 (PC의 OS)

  • 안드로이드 (구글 스마트폰의 OS)

  • iOS (애플사 아이폰의 OS)

  • OS X (애플사 맥PC의 OS)

  • 리눅스 (PC및 서버의 OS)


이들 중에서 안드로이드는 모두 리눅스와 연관이 있으며 OS X, iOS 는 BSD 라는 OS 계열이다. 그리고 리눅스와 BSD 모두 유닉스(unix)에서 유래되었다.




'맥,리눅스,윈도' 카테고리의 다른 글

리눅스의 파일 시스템  (0) 2015.05.16
리눅스의 커널(kernel)과 쉘(shell)  (0) 2015.05.16
리눅스(Linux) 소개  (0) 2015.05.16
자유 소프트웨어 재단 (FSF)의 설립  (0) 2015.05.16
유닉스(unix) 소개  (1) 2015.05.16
Posted by 살레시오
,