본문 바로가기

프로그래밍/CS

운영체제와 리눅스 명령어 정리

운영체제와 리눅스 명령어 정리

운영체제란?

- a program that manages a computer's hardware
- 컴퓨터 시스템의 하드웨어적 자원, 소프트웨어적 자원을 효율적으로 운영 관리하여 사용자의 편의성을 증진시키는 시스템 소프트웨어
- 하드웨어 성능을 최적화하여 시스템의 생산성 증가

- 커널과 셀로 구성

 

 

콘솔, 터미널, 쉘의 차이점

콘솔

서버의 로컬 장치에서 직접 명령어를 작성할 수 있는 물리적인 입출력 장치

 

터미널

콘솔 + 원격제어 환경

서버의 로컬 또는 원격으로 접속할 수 있는 콘솔을 구현한 소프트웨어

 

cf. 터미널과 터미널 에뮬레이터

우리가 사용하는 CLI 창은 사실 엄밀히 말하면 터미널이 아닌 터미널 에뮬레이터임.

진짜 터미널은 PC가 등장하기 전 메인프레임 컴퓨터에 입출력을 담당하는 말단 기기(teletype)를 뜻함.

현재 사용중인 터미널에도 'teletype'의 흔적은 남아있음. 바로  /dev/tty

 

 /dev/tty?

  • 소프트웨어 터미널
  • 우리는 tty2를 통해 컴퓨터 속을 그래픽 화면으로 살펴보고 있는 것.

 

 

따라서 콘솔과 터미널은 항상 함께 실행된다

 

  • 실제로 명령어를 전달하고 결과를 전달받는 프로그램
  • 사용자가 입력한 명령어를 OS로 전달하는 명령어 해석기
  • bash, sh, csh 등 종류 다양
  • GUI(Graphical User interface) 셀, CLI(Command line interface) 셀로 나뉨
    • GUI(Graphical User interface) 셀: window, aqua(맥os) 등등
    • CLI(Command line interface) 셀: cmd, powershell(window), bash(ubuntu 및 맥os), csh 등등

 

프로세스와 스레드

  • 프로그램이란, 컴퓨터가 수행할 작업을 기록해둔 것
  • 프로그램이 실행될 때, 운영체제는 프로세스 단위로 프로그램을 관리
  • 즉 운영체제는 프로세스 단위로 메모리와 CPU 연산 등 컴퓨팅 자원 분배

 

메모리 관리

  • 프로세스에 실제 메모리의 일부를 떼어서 주소 형태로 제공(가상 메모리)
  • 프로세스는 컴퓨터 전체의 메모리가 아닌 가상 메모리에만 접근 가능(프로세스 격리)
  • 따라서 서로 다른 프로세스간에는 접근할 수 없기에 프로세스간 통신을 위해 프로세스 통신 기법(IPC, Inter process communication) 사용

 

CPU 자원 관리

  • 코어 단위로 프로세스에 제공
  • 프로세스는 스레드라는 단위로 코어 하나씩 사용 가능
  • 하나의 프로세스는 최소 1개의 스레드 가짐
  • 하나의 프로그램이 여러 프로세스 갖는 경우: 멀티프로세싱
  • 하나의 프로세스가 여러 스레드 갖는 경우 : 멀티스레딩

 

 

프로세스 관리와 시스템 콜

ps

현재 터미널과 관련된 프로세스 목록 출력

ps -ef

모든 터미널에서 현재 실행중인 프로세스 목록 및 부가정보 출력

UID PID PPID C STIME TTY TIME CMD
사용자명 프로세스 아이디       해당 프로세스가 붙어있는 teletype(터미널)    

 

프로세스 삭제하기

sudo kill -s KILL [PPID]

KILL 명령어 입력시 셀의 프로세스는 커널에게 이 명령을 전달하고, 커널은 권한 확인 후 작업 수행.

이때 프로세스가 커널에게 요청을 전달하는 기능을 시스템 콜 이라고 함. 

 

[명령어] | grep [문자열]

특정 문자열을 포함한 라인만 선택해서 출력하기

 

 

리눅스 명령어

ls

현재 위치한 곳에서 어떤 파일과 폴더가 있는지 보여준다

ls -l

더 세부적인 정보를 보여준다

ls -l 특정 파일/폴더

지정한 파일/폴더의 세부 정보를 보여준다

ls -a

숨김 파일/폴더도 모두 보여준다

ls -al

숨겨진 파일/폴더 포함 모든 파일의 세부 정보를 보여준다

 

총 10글자.
맨 앞은 폴더(d)인지 파일(-)인지

링크의 수 해당 파일에 대한 소유권을 가진 소유 사용자 파일을 소유한 그룹 이름 파일 크기 파일 최종 수정 일시 파일/폴더명

 

rm, cp -r

-r은 하위 디렉토리까지 모두 삭제/복사하라는 뜻

 

가상환경

서로 다른 프로젝트에서 어떤 프로그램을 사용하려고 할 때 사용하는 프로그램의 버전이 각자 다를 수 있다. 이 경우 버전 문제가 발생하기에 개발하기가 불편하다.

 

따라서 가상환경이라는 독립된 공간에서 파이썬과 패키지를 설치하여 버전 충돌 없이 여러 프로젝트를 동시에 진행할 수있다.

 

파이썬 가상환경 만들기

https://dojang.io/mod/page/view.php?id=2470 

 

파이썬 코딩 도장: 47.11 가상환경 사용하기

파이썬을 사용하다 보면 pip로 패키지를 설치하게 되는데 이 패키지들은 파이썬 설치 폴더(디렉터리)의 Lib/site-packages 안에 저장됩니다. 그래서 pip로 설치한 패키지는 모든 파이썬 스크립트에서

dojang.io

 

아나콘다 명령어 치트시트

https://docs.conda.io/projects/conda/en/4.6.0/_downloads/52a95608c49671267e40c689e0bc00ca/conda-cheatsheet.pdf

 

 

참고

https://www.leafcats.com/137

 

리눅스 ls -l 명령어 - 파일 정보 확인과 의미

리눅스의 파일에는 파일 이름이나 수정일시 등의 간단한 속성에서부터, 파일의 소유권이나 허가권과 같은 중요한 정보들을 담고 있는 속성들까지 다양한 속성이 존재한다.특히, 파일 허가권이

www.leafcats.com

https://blog.naver.com/asianchairshot/221383363419

 

터미널, 콘솔, 쉘의 차이점

맥 OS 환경에서 개발을 하며 접하게 됐던 터미널. 처음에는 터미널과 쉘이 다른 것이라는 것도 모르며 각...

blog.naver.com

 

 

'프로그래밍 > CS' 카테고리의 다른 글

에자일(Agile) 방식  (0) 2023.07.31
[Software Engineering] TDD(Test Driven Development)  (0) 2023.07.18