본문 바로가기

전공 과목 시험정리/운영체제 기초

리눅스 기초 (개요/구조/특징)

리눅스의 개요

1) 리눅스의 탄생
– 1991년 리누스 토발즈가 어셈블리어로 리눅스 커널 0.01 버전을 최초로 작성. (커널만 리누스가 만듬)
– 당시 목표는 유닉스의 작은 버전인 미닉스 보다 좋은 운영체제를 만드는 것.
– 1992년 0.02 버전을 작성하여 인터넷에 소스코드를 공개하여 모든 개발자들이 자유롭게 이용할 수 있게 함.
– GNU 프로젝트로 인해 완성되었으므로 정확히 GUN/Linux라 불러야 한다.

2) GNU 프로젝트
– 1984년 리차드 스톨만, 목표는 “모두가 공유할 수 있는 소프트웨어를 만드는 것” –> 소스코드 공개
– 프로그램의 사용에 대한 자유, 프로그램의 수정에 대한 자유, 프로그램의 재배포에 대한 자유, 수정된 프로그램의 이익을 전체가 얻을 수 있도록 배포할 수 있는 자유

3) 리눅스 개발
– 리눅스 커널 (엄격한 의미의 리눅스)
– 커널
가장 핵심적인 연산이 이루어 지는 부분
제어하는 하드웨어 장치의 지원 여부에 대한 정보, 성능 및 하드웨어를 제어하는 코드를 포함.

리눅스의 구조

양파같은 구조를 가지고 있다.
가장 안 : 하드웨어 (CPU, GPU, RAM, HDD, ODD 등)
그 다음 : 커널 (코어, 운영체제의 핵심)
그 다음 : 쉘 (명령어 해석기. 대표적으로 bash 와 csh 등이 있음.)
그 다음 : 응용 프로그램 (에디터, 통신 프로그램, X윈도우, 웹서버, DB서버) 즉, 데몬을 뜻함.

1) 커널 이란?
프로그램의 실행과정에서 가장 핵심적인 연산이 이루어 지는 부분. 코어. 리눅스라고 부른다.
하드웨어를 직접 제어하고, 프로세스 관리, 메모리 관리, 파일시스템 관리 등을 수행하는 운영체제의 핵심.
사용자가 실행시키는 응용프로그램(어플리케이션)과 하드웨어 사이의 관리자 역할을 수행.
쉘과 연관되어 쉘에서 지시하는 작업을 수행하고 그 결과를 쉘로 보내는 일.

2) 쉘 이란?
사용자가 입력한 명령어를 해석하여 커널에 전달하는 명령어 해석기.
(유닉스, 리눅스에서 대화형 사용자 인터페이스를 부르는 용어로서, 쉘은 프로그래밍 계층에 있으면서 사용자가 입력한
명령어를 이해하고 실행하는 역할을 수행. 쉘은 사용자가 입력한 문자열을 해석하고 그것에 타당한 명령어를 찾아서, 커널에
그에 따른 작업을 요청하게 된다. 그리고 커널에서 작업을 수행한 결과를 다시 쉘로 보내면 쉘은 그것을 유저들에게 알려주게
된다.)
Ex) bash(본쉘), csh(C쉘), ksh(콘쉘) 등
3) 유틸리티 란?
사용자가 컴퓨터를 쉽게 사용하고 운영체제가 효율적으로 수행되도록 보조하는 프로그램.

3-2) 리눅스 배포판
리누스 토발즈는 리눅스 커널을 작성하여 배포한 사람이다. 리눅스는 커널에 컴파일러, 쉘, 기타 응용프로그램을 조합한
배포판이다. 리누스 토발즈가 만든 리눅스 커널에 여러가지 응용프로그램을 조합하여 운영체제 전체를 만든 다음,
많은 리눅스 단체/회사에서 자신의 이름을 붙여 판매/배포하고 있다.

리눅스의 특징

– 멀티태스킹 (다중작업), 멀티유저(다중사용자)
– 유연성, 확장성
– 다양한 파일시스템 지원
– 효율적인 네트워크 운영지원
– 공유라이브러리 지원
– 가상메모리 지원, 실시간 적재 기능
– 가상 메모리 지원, 실시간 적재 가능
–> 라이브러리 란
– 프로그래밍에 사용할 수 있게 미리 만들어져 있는 함수나 변수들의 묶음.
– 리눅스에서 프로그램을 개발하다 보면 여러 사람이 함께 개발하는데 여러 사람이 같은 기능을 공동으로 사용할 때
이 기능을 각각의 소프트웨어에 함수로 넣어 사용하기 보다는 라이브러리로 만들어 함께 사용하는 것이 편리하다.
같은 기능을 중복 기술하지 않아도 되니 효율성이 높아지고, 다른 프로젝트에서도 사용 가능하게 되는 것이다.

–> 가상메모리란?
– 메모리가 부족할 것을 대비, 디스크 (HDD, SSD 등)에 만들어둔 보조 메모리.
– 메모리가 부족할 경우, 메모리에 적재되어 있던 유휴 프로그램을 보조 기억장치 (가상메모리)로 옮김.

'전공 과목 시험정리 > 운영체제 기초' 카테고리의 다른 글

사용자 계정 관리 / 슈퍼유저  (0) 2015.01.11
리눅스 기본 명령어 3  (0) 2015.01.11
리눅스 디렉토리  (0) 2015.01.11
리눅스 기본 명령어 2  (0) 2015.01.11
리눅스 기본 명령어 1  (0) 2015.01.11