2 분 소요

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년대 후반 벨 연구소에서 처음 개발
    • 윈도우 계열을 제외한 모든 현대적 운영체제의 원형
  1. 처음으로 assembly가 아니라 C언어라는 고급 프로그래밍 언어로 kernel까지 작성된 운영체제 (C언어 자체가 UNIX를 프로그래밍하기 위해 개발된 것)
  2. 때문에 다른 HW로 이식하기가 쉽고 multitasking 기술을 도입하여 여러 사용자가 동시에 사용할 수 있게 되었습니다.
  3. 즉, 멀티 태스킹, 멀티 유저를 지원합니다.
  4. 서버 운영에 필수적인 CLI (Command Line Interface)가 상당히 강하기 때문에 서버 시장에서는 윈도우보다 인기가 좋습니다.

유닉스란 최초로 C로 작성된 OS커널을 가지고, 하이라치컬 파일 시스템을 가집니다.
루트(/) 디렉토리로부터 시작하며, 유닉스의 모든 것은 파일입니다.
이식성이 높고, 대화형에, 시간을 공유하며, 멀티 태스킹과 멀티 유저를 지원합니다.

POSIX 표준

  • 이식 가능 운영 체제 인터페이스 (Portable Operating System Interface) + X
  • 서로 다른 유닉스 OS의 공통 API를 정리하여 이식성이 높은 유닉스 응용프로그램을 개발하기 위한 목적으로 책정한 애플리케이션 인터페이스 규격
  • POSIX 표준을 만족하는 것들을 유닉스 계열 운영체제라고 합니다. (리눅스, Mac OS 등)
  1. UNIX를 모방해서 여러 운영체제들이 나타났는데 이들을 표준화하기 위해 만든 것이 POSIX 표준입니다.
  2. POSIX 표준을 만족하는 것들을 UNIX 계열 운영체제라고 합니다.
  3. 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관련)
  • 메시지 패싱, 세마포어(싱크로나이징해주는 기능중 중요)
  • 공유 메모리, 프로세서간의 메모리를 공유해 데이터를 쉽게 주고 받음
  • 소켓, 인터넷 커뮤케이션 통신 툴

댓글남기기