[운영체제] Unix / Linux

·2021년 4월 21일
0

Unix

개요

AT&T 벨 연구소, MIT, General Electric이 공동 개발한 오픈소스 운영체제이다.
Time Sharing System (시분할 시스템) 을 위해 설계된 대화식 운영체제이다.
대부분 C언어로 작성되어 있기 때문에 이식성이 높고, 하드웨어나 프로세스 간의 호환성이 높다.
CLI 기반 운영체제이다.

CLI vs GUI
CLI(Command Line Interface): 키보드로 명령어를 직접 입력하여 작업을 수행하는 사용자 인터페이스 (리눅스 쉘창에서 cd 한번쯤은 쳐봤겠지?)
GUI(Graphic User Interface): 마우스로 아이콘이나 메뉴를 선택하여 작업을 수행하는, 그래픽 기반의 사용자 인터페이스 (우리가 익숙한 것!)

트리 구조의 File System을 갖는다.

Multi-User, Multi-Tasking을 지원한다.

Multi-User: 여러 사용자가 동시에 시스템을 사용하는 것
Multi-Tasking: 여러 개의 작업/프로그램을 동시에 수행하는 것. (우리에겐 너무 당연한 개념)

Unix System 구성

1. Hardware

2. Kernel⭐

Unix의 핵심!

컴퓨터가 부팅될 때 주기억장치(메모리)에 적재된 후 상주하면서 실행된다.
컴퓨터 부팅할 때 로딩중 뜨는게 커널 로드하는 중이라는 뜻임
항상 커널이 메모리에 상주중이기 때문에 컴퓨터를 그냥 켜두기만 해도 메모리 사용량이 0%일 수가 없음ㅎㅎ

하드웨어와 쉘 사이에서 하드웨어를 보호하고, 프로그램과 하드웨어 간의 인터페이스 역할을 담당한다.

커널이 하는 대표적인 일들은,

  • 프로세스 관리(=CPU 스케줄링 - 추후 자세히 다루도록 하겠음)
  • 메모리 관리
  • 파일 관리
  • I/O 관리
  • 프로세스 간 통신
  • 데이터 전송 및 변환

등 많은 일을 해준다.

Unix에서 프로세스 간의 통신
각 프로세스들은 시스템 호출을 통해 커널의 기능을 사용한다. (*시스템 호출: 쉘에서 쓰는 명령어라고 이해하자)
프로세스 간 통신시 사용하는 방법:

  • Signal: 간단한 메세지를 이용하여 통신하는 것.
  • Pipe: 한 프로세스의 출력이 다른 프로세스의 입력으로 사용되는 단방향 통신 방식
  • Socket: 프로세스 사이의 대화를 가능하게 하는 양방향 통신 방식

3. Shell


Window의 cmd와 같은 개념
사용자의 명령어를 인식해서 프로그램을 호출하고 명령을 수행하는 명령어 해독기
시스템(커널)과 사용자 간의 인터페이스를 담당한다.
앞서 말한 CLI 인터페이스가 쉘을 말하는 것!
주기억장치에 상주하지 않음.
명령어가 포함된 파일 형태로 존재함.
파이프라이닝이 가능하다.

파이프라이닝
처리한 결과를 다른 명령어의 입력으로 넘기는 것. 기호는 | 를 사용한다.
EX) ls -al | grep .txt
ls -al의 결과 (디렉토리의 파일 정보 출력) 를 grep 명령어의 입력으로 전환함. 결과적으로는 해당 디렉토리에서 .txt 형식의 파일에 관한 정보만 출력된다!

Linux

리눅스는 Linus Torvalds가 Unix를 기반으로 개발한 운영체제이다.
오픈소스를 기반으로 만든 운영체제라, 당연히 오픈소스다.
따라서 개인이 원하는 기능을 추가/변경하여 사용할 수 있고, 재배포가 가능하다. (리눅스를 설치할 때 검색해보면 우분투, 레드햇 등이 "리눅스" 뒤에 따라붙는데, 이게 다 재배포된 리눅스라고 생각하면 쉽다)
Unix와 완벽하게 호환되며, 대부분의 특징이 Unix와 동일하다.

profile
튼튼

0개의 댓글