CS/운영체제

[Linux]패키지&프로세스

용감한 개복치 2022. 2. 10. 19:04

1. 패키지

윈도우에서 말하는 .zip, .msi

프로그램을 다운받고 실행시키려면 필요한 잡다한 파일들이 많은데 그걸 하나하나 따로 받기는 힘드니, 한번에 받을 수 있게 묶어놓는은것.

 

1-1. 구성

  • 프로그램 파일
  • 프로그램 설치 파일
  • 프로그램 설치 설명서
  • 프로그램에 대한 정보를 담은 파일
  • 패키지 안에는 하나의 프로그램이 정상적으로 설치되고 동작하기 위한 모든 파일이 압축  
    그중에는 프로그램에 대한 정보를 담은 파일이 있는데, 
    프로그램 A를 설치하기 위해 프로그램 B가 필요하다는 정보도 함께 담겨있다. == 디펜던시 
    패키지를 이용해 프로그램을 설치하면,
    패키지에 포함된 정보를 이용해 프로그램 B를 먼저 설치하고 나서 프로그램 A를 설치합니다.

 

 

1-2. 종류

  • 소스 패키지
  • 바이너리 패키지

 1) 소스패키지

 소스 코드가 포장된 패키지. 컴파일러가 바이너리 파일로 만들어 주면 실행가능.

왜 귀찮게 컴파일 과정을 내가 다운받으면서 거처야하느냐,

오픈 소스의 장점인 커스터마이징을 위해서! 내가 직접 소스코드를 고쳐서 컴파일하면 나만의 에디션이 완성!

 

 2) 바이너리 패키지

 1번의 소스 코드들이 이미 컴파일 된 상태의 묶음. 리눅스의 기본 패키지들은 여기에 속함.

단, 최초 컴파일된 환경과 내 컴퓨터 환경이 호환이 안될 정도로 다르다면? 애도를 표한다.

 

+) 과제를 좀 해봤다 한다면 구글링 다음으로 진입하는 구간인 깃헙 & 스택 오버플로우.

아 왜 복붙했는데 안돼여ㅠ >의 큰 부분 중 하나가 실행환경 차이.

그래서 깃헙 같은 경우 실제 배포되는 서비스들의 소스코드도 오픈되는 경우가 많은데, 이 때 디펜던시라는 항목을 잘 살펴야한다. 나도 많이 겪었지만, 실컷 소스코드 복붙하고 나니까 리액트 버전이 달랐다던가 하는 문제들이 많았는데, 디펜던시라는 항목을 살펴보면 '이걸 만들려고 나는 뭐랑 뭐랑 쟤랑 설치했어요'라는 설명서다.

마찬가지로 바이너리 패키지 역시 이러한 의존성(dependencies)를 가지는데 있어보이게 패키지 의존성이라고 한다.

 

그럼 누가 그 많은 잡다한 파일들을 묶고 한큐에 다운받을 수 있게 해주는가?

 

2. 패키지매니저

그게 바로 ✨패키지 매니저✨

 패키지 매니징에도 저수준과 고수준으로 나뉘는데 그 차이는 단순 패키지의 설치,제거와 패키지 의존성을 해결 해 줄 수 있는지 없는지의 차이다.

 

+) 후술할 패키지 매니저는 리눅스 공부중이니까, 우분투에서 쓰는 패키지 매니저 apt가 될 것이지만 우린 이걸 이미 알고 있을 확률이 높다. 파이썬 유저라면 pip, node.js 유저라면 npm,yarn 자바 유저라면 jpm ...

전혀 낯선 것이 아니다.

 

2-1. 예시

  • apt
  • wget

 

자 그럼 지금부터는 우분투의 패키지 매니저 apt 실습

 

+) 궁금해서 덧붙이는 apt 와 apt-get의 차이
내부 동작 차이 x
그냥 apt는 더 많은 옵션을 가진 apt-get에서 자주 쓰는 것만 예쁘게 들고 온 것
apt가 출력이 예쁘고 기능이 제한됨
apt-get은 스크립트 작성할 때 기능제한이 없으니 유리함.

 

1) apt

apt를 쳐 보면 뒤에 뭐 쓸 수 있는지 설명들이 나열된다.

내용은 설명 되어 있으니 패스하고, 눈에 띄는 것만 살피면

update / upgrade / --only-upgrade install / install / remove

 

Q. 공통점이 뭘까요?

A. 관리자 권한이 필요합니다. 그 유명한 sudo를 앞에 붙여줍니다.

+) 위 항목들은 일반 유저가 할 수 없습니다. 윈도우도 관리자 권한으로 실행-이라는 버튼이 있는데 사실 어지간해서는 잘 안쓰이니까 리눅스가 권한에 대해 강조하는 것 처럼 번거로워보일 수도 있다. 하지만 리눅스를 사용 하는 용도들이 개인 컴퓨터 보다는 여러 노드 관리, 쉘 스크립트, 자동화, 모니터링 같은데 사용되는걸 생각하면 이해가는 부분.

 

설치 예제
그냥 해본 neofetchㅋㅋㅋㅋ

2) wget

wget은 URL을 통해 파일을 다운로드 받는 프로그램
대충 wget명령어 모음
https://jjeongil.tistory.com/1291

 

Linux : Wget 명령어 사용하는 방법, 예제

 GNU Wget은 웹에서 파일을 다운로드하기 위한 명령줄 유틸리티입니다. Wget을 사용하면 HTTP, HTTPS 및 FTP 프로토콜을 사용하여 파일을 다운로드할 수 있습니다. Wget은 여러 파일을 다운로드하고, 다

jjeongil.tistory.com

 

설치
sudo apt install wget

 

다운로드한 파일을 다른 이름으로 저장하려면 -O 옵션 다음에 선택한 이름을 전달
wget -O goodjob.txt https://bit.ly/37sJqCo 
wget -O [저장하고싶은 파일명] [url] 
       -q 지금 나한테 콘솔에 출력하지말고 다음꺼 실행

 

3. 프로세스

 

1) 프로세스

하하 여기서 이사온 블로그 글 링크 걸어둡니다ㅎㅎ 예전에 쓴거지만 교과서보고 쓴거니까 괜찮을꺼에요

https://bravesunfish.tistory.com/22

 

운영체제

전에 썼던 글 그대로 이사왔습니다. 혹시 타임라인이 안맞다면 그것 때문입니다. Reference -Remzi H. Arpaci-Dusseau, Andrea C. Arpaci-Dusseau, Operating Systems: Three Easy Pieces, http://pages.cs.wisc.e..

bravesunfish.tistory.com

  •  프로그램 : 명령어들의 집합, 정적 상태 파일
  •  프로세스 : 실행 되고 있는 프로그램, 크롬 두개? 그럼 프로세스도 두 개! 정의에 관한 설명은 윗글 참조
    • 포그라운드 : 사용자의 명령을 입력받고 출력하는 대화 방식의 작업수행. 결과가 나올 때 까지 기다려야함
      • $명령어
      • $ping 어쩌구저쩌구
      • +) 일시정지 하고싶으면 ctrl + z, jobs 명령어로는 일시정지 된 프로세스 포함한 프로세스들 목록 확인 가능. 다시 하고싶으면 fg + 작업번호도 가능. 백그라운드로 하고싶으면 bg + 작업번호도 가능
    • 백그라운드 : 포그라운드가 1명령 1실행 이라면, 백그라운드는 한 터미널에서 여러개 실행가능. & 옵션
      • $command &
      • $ping 어쩌구저쩌구
      • 일시정지 하고싶으면 fg + 작업번호 > ctrl + z
      • 그러면 종료는?!
        $ps -ef | grep [프로세스 아이디를 알고싶은 프로세스명]
        $kill -9 [프로세스 아이디, 즉 PID]
        $kill -9 [% jobs로 나온 백그라운드 프로세스 번호]
      • jobs 백그라운드에 돌고 있는 프로세스와 상태를 알 수 있음
        • Running : 실행 중
        • Stopped : 일시 중단(Ctrl + Z 입력)
        • Terminated : 강제 종료(kill 명령 종료)
        • Done : 정상 종료
    • 명령어 모음🎁
      • ps : 목록
      • pstree : 트리형 도식화
      • PID : 프로세스 번호, 이걸 확인해야하는 이유는 kill 같은 명령어를 사용할 때, kill -(시그널명or시그널번호) PID 해야하니까. 시그널 종류를 알고싶다면 kill -l 대충 옵션 궁금하면 -l 쳐보면 대충 다 가르쳐줌!
      • TTY : 프로세스가 실행된 터미널의 종류/번호
        • 현재 나의 콘솔이라는 걸 이해하기 위해서 가상 콘솔개념이 나오는데 여기 잘 설명되어있더라
        • https://jhnyang.tistory.com/51
      • CMD : 프로그램의 이름
      • 옵션은 사실 뭐 엄청나게 다양하지만 학교 과제 할땐 -e랑 -f만 쓴 것 같다ㅋㅋㅋㅋ
      • -e : 커널 프로세스를 제외한 모든 프로세스
      • -f : 풀 포맷으로 출력
      •  
      • ps -ef
      • -ef 항목은 조금 더 보자.
      • UID : 이게 있다면 SYSTEM V 계열. 프로세스 소유자
      • PPID : 부모프로세스의 ID +) 아이고옥 OS단에서 코드 만지려면 조금 머리아픈 친구니까 기억해두자
      • C : CPU 사용율
      • STIME : 시작된 시간

 

 

가상콘솔이란?(Virtual Consoles)-변환 단축키와 tty 명령어, shutdown 확인 실습

리눅스 완전 정복 : 리눅스 목차 [목차] 1. 가상콘솔이란? 2. 가상콘솔 이동, 확인 단축키 3. 가상콘솔 사용해보기 가상 콘솔(Virtual Consoles)이란? 가상 콘솔이란 '가상의 모니터'라고 생각하면 이해

jhnyang.tistory.com

 

 

2) 스레드

 프로그램 내의, 특히 프로세스 내에서 실행되는 흐름 단위

  • 사용자 레벨 스레드 : 커널 영역의 상위에서 지원, 사용자 레벨의 라이브러리로 구현.
  • 커널 레벨 스레드

3) 멀티스레드

 한 프로그램 내에서 두 개 이상의 스레드가 실행되는 경우. 멀티프로세스와 다름.

  • 멀티프로세스는 독립적인 실행과 별도의 메모리를 차지
  • 멀티스레드는 프로세스 내의 메모리를 공유해서 사용 가능
  • 프로세스 간의 전환 속도 < 스레드간 전환 속도
  • 단, 각 스레드 중 어떤것이 먼저 실행될 지 순서를 알 수 없음.

 

*** 참고 문헌 ***

https://ko.wikipedia.org/wiki/%EC%8A%A4%EB%A0%88%EB%93%9C_(%EC%BB%B4%ED%93%A8%ED%8C%85) 

 

스레드 (컴퓨팅) - 위키백과, 우리 모두의 백과사전

두 개의 스레드를 실행하고 있는 하나의 프로세스. 스레드(thread)는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다. 일반적으로 한 프로그램은 하나의 스레드를

ko.wikipedia.org

https://aahc.tistory.com/14

 

패키지 매니저(Package Manager)란?

패키지 매니저란? 패키지 매니저(Package manager)는 패키지를 다루는 작업을 편리하고 안전하게 수행하기 위해 사용되는 툴이다. 여기서 패키지를 다루는 작업이란 패키지를 설치, 업데이트, 수정,

aahc.tistory.com

 

휴..일단 여기까지..

오랜만에 학교때 내용까지 복습하는 기분이라 정리할께 많다.

교과서 정리한거 조금 더 들고와야지~~

다들 슬쩍슬쩍 구경해주시면 좋겠다..(✿◡‿◡)

'CS > 운영체제' 카테고리의 다른 글

[Linux]nohup  (0) 2022.05.13
[Linux]입출력, 표준 스트림  (0) 2022.02.11
[os]운영체제  (0) 2022.02.10
[Linux] 리눅스 디렉토리 구조  (1) 2022.02.09
[Linux]_CLI 기본명령어(2)  (0) 2022.02.09