안녕하세요
뚱보 프로그래머 입니다.
오늘은 리눅스 운영체제 구성에 대해서 간단하게 적어봅니다.
1. 커널
리눅스 운영 체제의 핵심인 커널은 모든 작업에 우선하여 동작하는 프로그램으로 사용자 프로그램과 하드웨어 장치간의 인터페이스를 제어하고, 다중 작업을 지원하기 위한 프로세스 스케쥴링을 하며, 시스템의 많은 부분을 통합적으로 관리하는 프로그램이다. 따라서 커널은 시스템상에서 동작하는 어떤 개별적인 프로세스라기 보다는 항상 메모리에 존재하면서 모든 프로세스들이 사용할 수 있는 루틴들의 집합이라고 할 수 있다. 커널 루틴은 여러 가지 방법으로 호출되는데 커널을 사용하는 직접적인 방식은 시스템 호출(System Call)을 사용하는 것으로서 커널이 호출된 프로세스를 취해서 관련 코드를 실행한다. 예를 들어 read 시스템 호출은 파일 기술자로부터 자료를 얻는다. read는 C 함수가 아니라 read의 실제 코드가 커널내부에 존재한다.
커널은 다른 상황에서도 실행되는데, 예를 들어 하드웨어 장치가 인터럽트를 발생시키면 커널 내부의 인터럽트 처리기를 찾게 된다. 어떤 프로세스가 어떠한 행동을 취하고 결과를 위해 기다려야 할 때는 커널이 개입하여 그 프로세스는 잠들게 하고 다른 프로세스가 활동할 수 있도록 스케쥴링을 한다. 그러므로 커널은 한 프로세스에서 다른 프로세스로 이동할 때 클럭 인터럽트를 사용하여 신속하게 프로세스간 제어권을 이동시킨다. 다중 작업은 이러한 방식으로 이루어진다.
리눅스 커널은 모든 장치가 커널의 알맞은 곳에 들어가 있는 단일(Monolithic) 커널이라고 알려져 있다. 리눅스는 적재 가능한 장치 드라이버를 지원하는데 언제든 사용자 명령에 따라서 메모리에 적재되고 빼낼 수 있다.
또한 리눅스 커널은 인텔 80x86 프로세서의 특별한 보호모드 특성을 사용하도록 개발되었다. 특히, protected mode, 기술자 기반의 메모리 관리 정책과 인텔 프로세서의 향상된 기능을 활용한다.
리눅스 커널은 필요에 따라 페이지하고 적재하는 실행 파일을 지원한다. 프로그램의 세그멘트 중 실제로 사용되는 부분만이 디스크로부터 메모리로 읽혀지며 한 프로그램이 동시에 여러 번 실행 중일 때에는 오로지 프로그램 복사본 하나만이 메모리에 적재된다.
리눅스는 disk paging을 구현하여 사용 가능한 메모리의 양을 늘린다. 최대 256MB까지 스왑 공간을 디스크에 할당 할 수 있다. 시스템에서 더 많은 물리적 메모리가 필요하면 비활성 상태의 page를 디스크로 보냄으로써 더 큰 애플리케이션을 실행시키고 동시에 여러 사용자를 지원할 수 있다. 하지만 스왑은 디스크 접근에 걸리는 시간이 느려지기 때문에 물리적 메모리를 대체하는 용도로 쓰이지는 않는다.
커널은 사용자 프로그램과 디스크 캐시에 대하여 통합된 메모리를 구현한다. 사용하지 않는 모든 메모리를 캐시로 사용하고 큰 프로그램이 실행되면 캐시가 줄어든다.
실행파일은 동적으로 링크되는 라이브러리를 사용한다. 실행 파일들은 디스크 상의 단일 라이브러리 파일에 들어있는 공유된 라이브러리 코드를 사용한다. 리눅스 공유 라이브러리는 실행 중 동적으로 링크되기 때문에 프로그래머는 라이브러리 모듈을 자신의 루틴으로 교체할 수 있으며 사후 분석을 위한 디버깅을 쉽게 해주기 위해서 리눅스 커널은 core 덤프를 한다. core 덤프와 디버깅 지원이 있도록 링크된 실행 파일을 사용하면 어떤 문제때문에 프로그램이 충돌했는지 등을 알 수 있다.
2. 프로그래밍 환경 제공
리눅스는 표준 라이브러리와 프로그래밍 도구, 컴파일러, 디버거 등의 모든 것을 포함하고 있는 완전한 유닉스 프로그래밍 환경을 제공한다. 유닉스 소프트웨어를 개발한다는 것은 애플리케이션과 시스템 프로그래밍 등을 의미하는데 이때 사용하는 언어가 C, C++이다. 리눅스의 표준 C, C++ 컴파일러는 많은 옵션을 지원하는 GNU gcc이다. 보호모드 80386 코드를 작성할 수 있는 다양한 어셈블리어가 있으며 펄(Perl)과 Tcl/Tk 쉘 인터프로터도 있다.
그리고 gdb 디버거가 포팅되어 있기 때문에 버그를 찾기 위해 프로그램을 단계적으로 실행시키거나 core 덤프를 일으킨 원인을 조사할 수 있다.
또한 대형 애플리케이션의 컴파일을 관리할 때 사용하는 GNU make와 imake가 있어서 개발 작업이 편리하다.
리눅스는 유닉스 애플리케이션 개발에 있어서 이상적이다. 리눅스는 라이브러리, 프로그래밍 유틸리티 등을 완벽하게 갖춘 프로그래밍 환경이라고 할 수 있으며 완전한 커널 소스와 라이브러리, 유틸리티 등을 소스코드로 소유할 수 있도록 해준다.
3. 네트워킹 데몬 프로그램
리눅스는 유닉스 시스템을 위한 두개의 주요한 네트워킹 프로토콜인 TCP/IP와 UUCP(Unix to Unix
Copy Program)을 지원한다. TCP/IP는 전송 제어 프로토콜과 인터넷 프로토콜을 의미하는 것으로
전세계의 사람들이 인터넷이라 부르는 단일 네트워크에 참여할 수 있도록 하는 네트워킹을 말한다.
그리고 리눅스에서 TCP/IP를 이용하여 네트워크에 접속하면 전자 우편은 물론 유즈넷 뉴스, 파일 전송
(FTP) 등의 방법을 이용하여 인터넷상의 사용자는 물론 시스템들과 통신할 수 있다.
대부분의 TCP/IP 네트워크는 물리적인 네트워크 전송 매체로 이더넷(Ethernet)을 사용하고 있다. 그리고 NFS를 사용하여 네트워크 상의 다른 시스템과 파일을 공유할 수 있는데, 원격 파일이 마치 여러분의 시스템 드라이브에 있는 것처럼 보이게 된다. 또한 파일 전송 프로토콜(FTP)을 사용하여 네트워크 상의 시스템들 간에 파일 전송을 할 수 있다. SMTP가 포함되어 있어 sendmail이나 smail등으로 메일을 주고 받을 수 있다.
bind는 리눅스 시스템을 인터넷 서버로 구현 가능하도록 name 서비스를 제공하며 웹 서비스의 구현을 위해서 apache 등의 웹 서비스 프로그램이 이용되기도 한다. telnet이나 rlogin, rsh, ssh 등을 사용하여 네트워크상의 다른 리눅스 시스템에 접속할 수 있으며 명령을 실행할 수도 있다. finger를 사용하여 다른 인터넷 사용자에 대한 정보를 얻을 수도 있다.
데이타베이스 서버의 구현을 위해서는 Postgresql이나 MySQL 등이 오픈소스로 공개되어 리눅스 시스템에서 사용되므로 이들 서버 프로그램을 이용하여 인터넷 서버의 구현이 가능하다.
Elm, Pine, rn, nn, tin과 같은 News Reader 프로그램들은 메일 클라이언트 프로그램으로 리눅스에서 사용할 수 있는데, 실제로 사용자의 입장에서 메일을 주고 받을 수 있다.
4. 애플리케이션 프로그램
1] 오피스 프로그램
StarOffice, KOffice, GnomeOffice, 한컴 오피스, AbiWord, WordPerfect 등
2] 데이터베이스
Oracle, Sybase, Infomix, MySQL, Msql, PostgreSQL 등
3] 그래픽 툴
Gimp, Xpaint, Electric Eyes, Picview, Photo Paint 등
4] 웹 브라우저
넷스케이프, 모질라, 오페라, galleon, 텍스트 브라우저인 Lynx와 w3m 등
5] 네트워크 프로그램
ncftp, gftp, gnomeicu, kicq, gau(통신프로그램) 등
6] 데스크탑 관리자
GNOME(GNU Object Model Environment), KDE(K Desktop Environment) 등
7] 게임
xmame, Quake 3 등
8) 에디터
vi, emacs, CoffeCup HTML Editor 등
9) 멀티미디어 애플리케이션
xmms(MP3 Player), ZZPlayer, Alsa Player, Xtheater, RealPlayer for Linux 등
10) 유틸리티
VMWare, Wine, Download for X, Web Builder, Xmanager 등
5. X 윈도우
유닉스 표준 그래픽 인터페이스를 제공하며, X를 사용하면 사용자는 한 화면에 동시에 서로 다른 로그인 세션을 갖는 여러 개의 터미널 화면을 가질 수 있으며 이를 이용하여 여러 가지 다른 작업을 각 화면에서 할 수 있으며 마우스를 사용할 수 있다.
게임과 그래픽 유틸리티, 프로그래밍/문서 작성도구와 같은 X 고유의 애플리케이션들이 오픈 소스로 제공되고 있으며 리눅스에서의 X 윈도우의 사용은 리눅스 시스템을 workstation으로 만들어준다. 또한 TCP/IP 네트워킹을 함께 사용하면 X를 사용하고 있는 다른 시스템과 마찬가지로 다른 시스템에서 동작하고 있는 X 애플리케이션을 여러분의 모니터에 display 할 수 있다. 리눅스에서 사용하는 X 버전은 XFree86이라고 부르는데 리눅스와 같은 80386 기반의 유닉스 시스템을 위해 자유롭게 배포되고 있는 X11R6 버전을 가리킨다.
XFree86은 VGA, 슈퍼 VGA, 그리고 기타 수많은 가속 비디오 어댑터를 포함한 비디오 하드웨어를 지원한다.
표준 X 애플리케이션으로 텍스트 기반의 터미널 애뮬레이터인 xterm, 로그인 관리자인 xdm, 시계를 표시하는 xclock, x 기반의 man 페이지를 제공하는 xman 등이 있다.
참~ 많죠잉
사실 운영체제는 외우는게 아닌 이해하는것이 중요한것 같습니다.
이런게 있다~ 라고 정확하게 이해만 한다면 10점 만점에 10점~ !
'IT > 리눅스마스터1급' 카테고리의 다른 글
리눅스 기본 하드웨어 정보 확인방법 (0) | 2022.05.11 |
---|---|
리눅스 배포 매카니즘 (0) | 2022.05.11 |
리눅스 개요 (0) | 2022.05.11 |
리눅스 기본 명령어 (0) | 2022.05.09 |
iptables 설정 및 옵션 (0) | 2022.05.09 |