Linux

Linux란 ?

cwchoiit 2023. 10. 4. 15:22
728x90
반응형
SMALL
728x90
반응형
SMALL

Linux?

Linux는 OS다. OS는 Operation System의 약자로 운영체제라고 불리고, 운영체제란 컴퓨터의 하드웨어와 소프트웨어 자원을 관리하는 시스템 소프트웨어를 말한다.

 

Linux에는 여러 배포판이 존재하는데 그중 흔히 사용되는 건 CentOS, Ubuntu, Fedora 등이 있다. 여러 배포판이 존재한다는 것은 배포판끼리 차이점도 존재한다는 뜻이지만 모든 배포판 사이에서도 공통점이 존재하는데 이는 리눅스 커널(Kernel)을 사용한다는 것이다.

 

Linux Kernel?

리눅스 커널은 리눅스 운영체제에서 가장 중요한 구성요소라고 할 수 있다. 그리고 컴퓨터의 하드웨어들과 프로세스들의 핵심이 되는 인터페이스 역할을 한다. 그래서 커널이 도대체 무엇을 하는 걸까? 

 

- 메모리 관리: 어디에 그리고 무엇에 메모리가 사용되고 저장되는지를 지속적으로 추적한다.

- 프로세스 관리: 어떤 프로세스가 언제, 어떻게, 그리고 얼마나 오래 CPU를 사용할 수 있는지 결정한다.

- 디바이스 드라이버: 하드웨어와 프로세스 간 중재자 역할을 한다.

- 시스템 요청과 보안: 프로세스로부터 서비스에 대한 요청에 대한 책임이 있고 보안에 대한 책임을 가진다.

 

Linux 운영 체제 주요 구성요소

  • 커널 (kernel) - 운영체제와 거의 비슷하게 아래 내용들을 다 도와주는 소프트웨어라고 생각하면 된다.
  • 프로그램 실행과 멀티 테스킹
  • 인터럽트 - 하드웨어가 운영체제한테 뭔가 데이터가 전달되었다는 걸 알려주는 것
  • 메모리 관리
  • 파일 시스템
  • 디바이스 드라이버 - 각각의 디바이스(GPU, CPU,...)를 잘 동작시키기 위해 필요한 것
  • 네트워킹
  • 사용자 인터페이스

 

관련 알고 있으면 좋을 지식들

- 리눅스에서는 파일 확장자라는 개념이 따로 없다: 그냥 파일 확장자를 붙일 수는 있다만, 파일 확장자를 가지고 동작하지 않는다.

- exit 명령어는 터미널을 종료하는 게 아니고 쉘(shell)을 종료하는 것이다

- env 명령어를 실행하면 PC에 세팅된 모든 환경변수를 확인할 수 있다

- 리눅스는 설치하는 순간 무조건 root 계정이 자동으로 생성된다

- 리눅스는 기본적으로 /home 다음 계정 별 폴더가 존재하게 된다: 즉, 리눅스에 test, app, cwchoi라는 계정이 있으면 /home 아래에 test, app, cwchoi라는 폴더가 있다. 참고로 맥은 /Users 아래에 존재한다.

- Ubuntu는 apt가 패키지 매니저 CentOS는 yum이 패키지 매니저다

- ls -ali를 입력하면 아이노드 번호와 하드링크된 개수를 확인할 수 있다: 아래는 해당 명령어를 입력했을 때 노출되는 화면이다. 맨 앞에 칼럼이 아이노드 번호다. 그리고 세 번째 칼럼이 링크된 개수를 의미한다. 4로 표시되면 해당 폴더가 하드링크된 개수가 4개임을 의미한다.

 

 

File System

파일을 관리하기 위한 시스템이다. OS와 File사이 어딘가에 존재하는 녀석이다. 파일이 파일 시스템에 올라가는 것을 "마운트 된다"라고 표현한다. 만약, 추가적인 하드 디스크를 구비해서 장착하면 이 하드디스크를 나타내는 파일이 파일 시스템에 마운트 되어야 한다. 그래야 그 하드 디스크를 파일 시스템에서 사용할 수 있게 된다. 

리눅스는 Tree 형태의 계층 구조를 가지는데 그 구조의 가장 최상위는 root(/)이다.

위 사진처럼 트리구조를 가지면서 파일을 형성하는데 파일의 종류는 다음과 같다.

 

- 일반 파일 (regular file): 말 그대로 일반 파일이다. 텍스트 파일, 동영상 파일 등이 일반 파일에 포함된다.

- 디렉터리 (directory): 디렉터리도 파일의 한 종류이다.

- 심볼릭 링크 파일 (symbolic link file): 어떤 다른 파일을 가리키는 파일이다.

- 블록 디바이스 파일 / 문자 디바이스 파일 (block/character device file): 블록 또는 문자 디바이스를 제어하기 위한 파일. 디바이스 파일이란 일단 컴퓨터 구조가 HW - OS - App 이런 식으로 생겨먹었는데 HW와 OS 간 커뮤니케이션을 위해선 그 역할을 수행하는 녀석이 필요하고 그게 디바이스 드라이버다. 디바이스 드라이버를 통해 OS가 HW에게 명령을 내리거나 어떤 신호를 받는데 이건 이제 OS와 HW 간 의사소통이고 OS위에 올라가 있는 Application에서 또한 HW와 의사소통을 할 수가 있다. 이때 필요한 것이 디바이스 파일이다.

- 파이프 파일 (pipe file): 파이프를 나타내는 파일이다. 프로세스 간 통신에 사용된다.

- 소켓 (socket): 소켓을 나타내는 파일이다. 프로세스 간 통신에 사용된다.

 

위 이미지에서 각 파일 별 이미 역할을 가지고 있는, 좀 더 와닿는 표현으로는 관습적으로 그렇게 행하고 있는 폴더가 있다. 아래 내용을 보자.

  • / : 루트 디렉터리. 모든 디렉터리의 최상위 부모
  • /bin : 모든 사용자가 사용할 수 있는 여러 가지 실행 파일이 위치
  • /sbin : 시스템 관리자 권한으로 실행해야 하는 실행 파일이 위치
  • /etc : 여러 가지 설정 파일 (주의요망)
  • /lib : 공유 라이브러리 디렉터리
  • /home : 사용자들의 홈 디렉터리. 이 디렉터리 아래에는 각 계정 별 폴더가 존재하게 된다.
  • /mnt : 일시적으로 파일 시스템에 마운트 하는 경우 사용하는 디렉터리. 예를 들어 USB, CD ROM과 같은 일시적인 공간을 마운트 할 때 관습적으로 이 부분을 위치하게 된다.
  • /proc, /sys : 시스템 정보를 설정/조회할 수 있는 디렉터리. 이 녀석들은 특수한 디렉터리인데 운영체제가 자신의 정보들을 사용자(유저 레벨의 애플리케이션)에게 보여주기 위해 만들어진 파일이고 HW에 실제 존재하는 공간이 아니라 OS가 만들어낸 가상의 파일
  • /tmp : 임시 디렉터리
  • /usr : 사용자가 추가한 실행 파일, 라이브러리 등의 소프트웨어 저장.
  • /dev : 디바이스 드라이버가 사용하는 디바이스 파일 디렉터리.
728x90
반응형
LIST

'Linux' 카테고리의 다른 글

Vim 필수 기능 정리  (0) 2023.12.27
Hard Link / Soft Link  (0) 2023.10.04
사용자와 그룹과 파일 권한  (0) 2023.10.04
[Linux]: 내가 쓰려고 기록한 유용한 Commands  (2) 2023.10.04