-
[linux] 리눅스의 특징CS 지식/리눅스 2023. 3. 5. 12:03
리눅스의 프로그램적 특징
다중 사용자 및 다중 처리 시스템
-하나의 시스템에 다수의 사용자들이 동시 접속해서 사용할 수 있고 (=Mutli-User), 각 접속자들은 다수의 응용프로그램을 실행할 수 있다. (Multitasking)
완전히 공개된 시스템
- 운영체제의 핵심인 커널(Kernel) 뿐만 아니라, 같이 내장되어 배포되는 응용프로그램 대부분은 소스가 공개된 프로그램이다.
뛰어난 네트워크 환경
- 가장 널리 쓰이는 이더넷(Ethernet), SLIP, PPP, ATM 등의 다양한 네트워크 환경을 지원하며, TCP/IP, IPX, AppleTalk 등 대부분의 네트워크 프로토콜을 지원한다.
다양한 파일 시스템 지원
- 리눅스는 프로그램과 자료를 저장하기 위해 리눅스 고유의 파일 시스템인 ext2, ext3, ext4 등을 사용한다. 그러나 자기 고유의 파일 시스템만 지원하는 다른 운영체제와는 달리 다양한 파일 시스템을 지원한다.
뛰어난 이식성
- 리눅스는 약간의 어셈블리와 대부분의 C 언어로 작성되어 있다. 따라서 C를 컴파일할 수 있으면 어셈블리 부분만 새롭게 만들고 C 부분을 다시 컴파일함으로써 쉽게 다른 시스템에 이식할 수 있다.
유연성과 확장성
- 리눅스는 상업용 유닉스 (UNIX)의 모든 특성을 가지고 있으며, 유닉스의 표준인 포직스 (POSIX)를 준수하고 있다. 따라서 공개용 유닉스 프로그램들은 큰 문제없이 컴파일해서 사용할 수 있고, 커널, 장치드라이버, 라이브러리, 응용프로그램, 개발도구 등 리눅스의 원시코드를 쉽게 접할 수 있다. 리눅스에서 설계하고 만들어진 프로그램은 다른 시스템에 이식이 쉽고 자유로운 배포가 가능하다.
특히 일반적인 유닉스 운영체제는 특정제품의 하드웨어만 동작하도록 만들어져 있으나, 리눅스는 커널 소스가 공개되어 있어서 다양한 채널을 통해 다양한 하드웨어 관련 지원을 받을 수 있다 .
뛰어난 안정성과 보안성
- 리눅스는 커널 소스가 공개되어 있어서 Windows와 같은 폐쇄형 운영체제에 비해 보안상의 취약점이 쉽게 노출된 가능성은 있으나, 공개용 소프트웨어를 지지하는 많은 프로그래머들이 상용 운영체제보다 빠르게 오류 수정과 관련된 패치를 발표하고 있다.
다양한 배포판의 존재
- 리눅스는 서버, 개발용, pc용 등 다양한 목적으로 사용 가능하고, 이에 따른 다양한 배포판이 존재한다. 국외에는 레드햇(Red Hat), 데비안(Debian), 우분투(Ubuntu), 수세(SUSE) 등이 있고, 한컴리눅스, SULinux 등이 있다. 이러한 배포판들은 같은 리눅스 커널을 사용하지만 시스템 도구, 관리시스템, 응용 프로그램 등이 차이가 난다. 또한, 상용 배포판인 레드햇 엔터프라이즈 리눅스 (Red Hat Enterprise Linux), 수세 리눅스 엔터프라이즈 서버(SUSE Linux Enterprise Server) 등 과 커뮤니티에서 무료로 배포와 지원을 받을 수 있는 CentOS, Fedora 등으로 나눌 수 있다.
이 외에도 우수한 가격대 성능비, 다양한 응용프로그램의 제공등의 특징을 가지고 있다.리눅스의 기술적인 특징
계층적인 파일 구조
- 리눅스의 파일 구조는 /(root)를 기준으로 그 하위 디렉터리에 usr, var, bin 등이 존재하고 다시 usr 디렉터리 밑에는 local, src 등의 디렉터리가 존재한다. 이러한 구조를 계층적 파일 구조라 하며, 거꾸로 뒤집어 놓으면 나무처럼 생겼다고 해서 트리 구조라고도 한다.
장치의 파일화
- 장치(Device)란 하드 디스크, 키보드, 프린트, 화면 출력 장치 등 시스템에 설치된 여러 가지 하드웨어적 자원을 말한다. 리눅스는 이러한 장치들을 모두 파일화 해서 사용한다. 따라서 특정 하드웨어에게 명령을 수행하려면 해당하는 장치 파일에 명령을 내리면 된다.
가상 메모리 사용
- 가상 메모리(Virtual Memory)란 하드 디스크의 일부를 메모리처럼 사용되는 것을 말한다. 하드 디스크는 데이터가 저장되는 공간이고, RAM(메모리)는 작업공간이라 할 수 있다. 프로그램을 실행시키면 작업공간에 해당하는 메모리로 공간이 이동되는데, 메모리의 공간이 작으면 큰 프로그램은 실행시킬 수 없게 된다. 이러한 문제점을 극복하기 위해 사용되는 것이 가상 메모리이고, 리눅스에서는 이 영역을 스왑(SWAP)이라고 부른다.
*스와핑(Swapping)
메모리에 프로그램들이 많이 올라와 공간이 꽉 찼다고 하더라도 가상 메모리를 설정하면 추가로 새로운 프로그램을 실행시킬 수 있게 된다. 이것은 메모리에 올라와 있지만 사용하지 않고 있는 프로그램을 하드 디스크에 설정된 가상 메모리 공간으로 보내고 그 빈 공간에 새로운 프로그램을 로딩하기 때문이다. 또한 가상 메모리에 있는 내용을 사용 하려면 다시 메모리로 올리고, 그 대신에 메모리에 있던 다른 내용이 하드 디스크에 저장된다. 이처럼 메모리와 하드 디스크사이의 데이터 교환을 스와핑(swapping)이라고 한다.
동적 라이브러리 지원
프로그램에서 특정한 기능을 하는 루틴(Routine)들을 모아 놓은 것을 라이브러리(Library)라 하여, 프로그램 개발시 라이브러리 중에서 필요한 루틴들을 받아서 링크(Link)시킨다. 이렇게 되면 같은 기능을 하는 루틴들이 실행 파일마다 들어가므로 실행 파일의 크기도 커지고 메모리도 남게 된다. 그래서 같은 루틴들을 공유하는 것이 공유 라이브러리(Shared Library)라 한다.
정적 라이브러리는 컴파일할 때 이러한 라이브러리를 프로그램에 넣지만, 동적 공유 라이브러리(Dynamic Shared Library) 는 실행 파일 내부에 넣어두지 않고 프로그램을 실행할 때 가져다 사용하므로 메모리의 효율성이 아주 높다.
가상 콘솔
가상 콘솔(Virtual Console)은 하나의 모니터를 장착한 시스템에 여러 개의 가상 화면을 제공해서 사 용하게 하는 기능이다. 리눅스는 기본적으로 6개의 가상 콘솔을 제공한다. [CTRL]+[ALT]+[F1]을 기본 시작 창으로 해서 [CTRL]+[ALT]+[F6]까지 총 6개의 텍스트 기반의 로그인창을 제공한다. X윈도(Window) 사용 시에도 순차적으로 적용된다. X 윈도를 부팅 모드로 사용하는 경우에 첫 번째 창인 [CTRL]+[ALT]+[F1]이 할당되고, 텍스트 모드로 로그인한 후에 startx를 실행하는 경우에는 해 당 터미널에 X 윈도가 실행된다. 참고로 X 윈도 창이 아닌 가상 콘솔의 창전환은 [CTRL] 키 없이 [ALT] +[Fn]키 조합만으로도 가능하다. X-Window에서는 [ALT]키가 특수한 기능으로 사용되기 때 문에 [CTRL]키와 조합하지 않으면 창 전환이 되지 않는다.
파이프(Pipe)
파이프는 프로세스의 통신을 위해 도입한 것으로 어떤 프로세스의 표준 출력이 다른 프로세스의 표 준입력으로 쓰이게 하는 것을 말한다. 리눅스에서 파이프는 | 기호를 사용하고, 여러 개를 사용하면 파이프라인(Pipe-Line)을 구성하게 되면서 데이터들은 파이프라인을 따라 흐르게 된다. 결과적으로 파이프는 여러 명령을 조합할 때 사용하고 명령어와 명령어 사이에 | 기호를 사용한다.
https://ssoontory.tistory.com/183
리다이렉션(Redirection, 재지향)
기본적으로 프로그램은 연산 결과를 출력 장치( 파일, 모니터, 프린터 등)로 보내는데, 이 출력되는 데이터들을 임의로 다른 장치로 보내는 것을 리다이렉션, 즉 재지향이라고 한다. 다시 말해 프로그램이나 파일 명령어 등의 출력을 낚아채서 다른 파일이나 프로그램 명령어의 입력으로 보내는 것이라고 할 수 있다. 리다이렉션은 어떤 프로세스의 입/출력을 표준 입출력이 아닌 다른 입출력으로 변경할 때 사용한다.'CS 지식 > 리눅스' 카테고리의 다른 글
[Linux] 리눅스 파티션의 종류 (0) 2023.03.05 [Linux] 리눅스 파티션의 개념 (0) 2023.03.05 [Linux] 리다이렉션(Redirection, 재지향) (0) 2023.03.05 [Linux] 파이프 문자 (0) 2023.03.05 레드햇 (Red Hat) 이란? (0) 2023.03.03