Linux 기초 소개
Linux Lecture Introduction
소개글
리눅스의 기초적인 내용들에 관해 소개드리고자 합니다.
본 강의의 본래 명칭은 Unix System Programming 입니다.
해당 강의는 이론 파트와 실습 파트로 나뉘어 있습니다.
본 자료들은 기존 강의 내용을 저의 관점으로 재해석한 내용이기에 부족한 부분이 있을 수 있는 점 양해드립니다.
환경 설정
실습에 앞서 Linux Ubuntu 18.04 환경 설정이 필요합니다.
GCC, G++, automake도 설치가 필요합니다.
최근엔 굳이 컴퓨터의 메인 OS로 설치하거나 파티션을 나눌 필요없이
VM이나 윈도우의 WSL을 이용하는 등 여러가지 방법으로 환경 구축이 가능해졌습니다.
이에 관한 설명들은 인터넷 상에 좋은 자료가 많기 때문에 여러분의 몫으로 남겨두겠습니다.
실습의 목적
- Unix 계열 OS에 대한 전반적인 사용법을 배움
- Unix File Systems
- User Permission
- Multi-user Environment
- …
- Unix System call interface에 대한 실습과 이해
- Creating Processes
- Signal Handling
- Interprocess Communication
- …
Unix란?
Unix

- 다중 사용자 방식의 시분할 운영체제
- 1960년대 후반 벨 연구소에서 처음 개발
- 윈도우 계열을 제외한 모든 현대적 운영체제의 원형
- 처음으로 assembly가 아니라 C언어라는 고급 프로그래밍 언어로 kernel까지 작성된 운영체제 (C언어 자체가 UNIX를 프로그래밍하기 위해 개발된 것)
- 때문에 다른 HW로 이식하기가 쉽고 multitasking 기술을 도입하여 여러 사용자가 동시에 사용할 수 있게 되었습니다.
- 즉, 멀티 태스킹, 멀티 유저를 지원합니다.
- 서버 운영에 필수적인 CLI (Command Line Interface)가 상당히 강하기 때문에 서버 시장에서는 윈도우보다 인기가 좋습니다.
유닉스란 최초로 C로 작성된 OS로 커널을 가지고, 하이라치컬 파일 시스템을 가집니다.
루트(/) 디렉토리로부터 시작하며, 유닉스의 모든 것은 파일입니다.
이식성이 높고, 대화형에, 시간을 공유하며, 멀티 태스킹과 멀티 유저를 지원합니다.
POSIX 표준
- 이식 가능 운영 체제 인터페이스 (Portable Operating System Interface) + X
- 서로 다른 유닉스 OS의 공통 API를 정리하여 이식성이 높은 유닉스 응용프로그램을 개발하기 위한 목적으로 책정한 애플리케이션 인터페이스 규격
- POSIX 표준을 만족하는 것들을 유닉스 계열 운영체제라고 합니다. (리눅스, Mac OS 등)
- UNIX를 모방해서 여러 운영체제들이 나타났는데 이들을 표준화하기 위해 만든 것이 POSIX 표준입니다.
- POSIX 표준을 만족하는 것들을 UNIX 계열 운영체제라고 합니다.
- Linux, Mac OS X가 대표적인 유닉스 계열 운영체제입니다. 안드로이드, iOS 모두 유닉스 계열의 플랫폼입니다.
Linux vs Unix
| [Linux(리눅스)] | [Unix(유닉스)] | |
|---|---|---|
| 설명 | 오픈소스이며 무료OS | 대학, 회사, 큰 기업에서 주로 선호하는 OS |
| 가격 | 무료. 그러나 유료로 지원되는 것이 있다. |
몇몇은 개발용도로 무료(Solaris) 그러나 유료로 지원되는 것이 있다. |
| 첫 시작 |
1992년 MINIX(유닉스와 비슷한 시스템)에 의해 영감을 받은 리누스 토르발스가 개발.GUI, Drivers 등의 많은 특성들을 추가한 후에 지금의 리눅스가 된 OS의 프레임워크를 개발함.리눅스 커널은 1991년 9월 17일 출시. |
1969년, Bell연구소의 AT&T직원들과 데니스 리치에 의해 개발되었으며, C언어로 작성됨.휴대용 제품, 시분할 환경의 다중작업과 다중사용자 시스템을 위해 설계됨 |
| 예시 | Ubuntu, Fedora, Red Hat, Debian, Arch Linux, Android 등 | OS X, Solaris, 모든 리눅스 |
유닉스에서 리눅스로 바꼈는데 거의 차이가 없으나, 둘은 사실 전혀 다른 프로그램입니다. 리눅스는 컴퓨터과학과 대학원생이었던 리누스 토르발스가 개발한 커널입니다.
유닉스의 중요 주제
커널이란?
OS의 핵 커널 주위에 쉘 라이브러리 유틸리티 유저 프로그램이 있고,
유저 프로그램을 효율적으로 사용하기 위해 하드웨어를 제어해야 하는데,
하드웨어를 제어하는 기능이 있는 게 커널입니다.
중요 주제들
- 시스템에 있는 파일 엑세스 표준 입출력 도서관
- 멀티 유저 환경에서 파일을 다룸
- 디렉토리(폴더) 밑에 파일이 있고 파일 정보를 저장한다.
- 모든 장치를 파일로 간주한다.
- 커널을 이용해 새로운 프로세스를 만든다.(실행, 종료까지)
- 프로세스 간의 통신에서 싱크로나이징(순번)을 정한다.
- 프로세스 속성
- 신호 조정
- 인터프로세스 커뮤니케이션(IPC) 프로세서 간의 데이터 주고받기 그 중 하나 파이프
- 레코드 락킹(DB관련)
- 메시지 패싱, 세마포어(싱크로나이징해주는 기능중 중요)
- 공유 메모리, 프로세서간의 메모리를 공유해 데이터를 쉽게 주고 받음
- 소켓, 인터넷 커뮤케이션 통신 툴
댓글남기기