본문 바로가기

분류 전체보기502

10. shell - 프로세스 관리 및 제어 1. process 제어 명령어 - foreground process를 사용하면, 어떤 프로그램을 수행하는 중에는 다른 작업을 할 수 없다. - 만약 다른 작업을 해야한다면, 프로세스를 아예 종료하거나 잠시 중단시킬 수는 있을까? a) control + z (커맨드 입력 방식은 환경에 따라 다를 수 있으니, 참고하기를 바랍니다.) - 컨트롤 + z는 foreground에서 실행중인 프로세스를 잠시 멈추는 커맨드다. - 앞에 있는 숫자 1을 Job이라고 한다. ▶ Job - background process의 작업번호 - 여기서 알 수 있는 것은 foreground process가 background process로 넘어갔다는 점이다. - 진행중이던 프로그램을 멈추기 위해, 그동안의 수행기록을 지우는 것이.. 2021. 9. 9.
9. shell - foreground & background 프로세스 1. 리눅스 프로세스 - 이번 포스팅에서는 리눅스에서 사용하는 프로세스에 대해서 알아보자. a) 프로세스와 바이너리 ▶ 바이너리 - 코드 이미지 또는 실행파일 - 저장매체에 보관되어있는 파일 ▶ 프로세스 - 실행중인 프로그램 (메모리에 올라간 프로그램) - 가상 메모리 및 물리 메모리 정보 (상태 정보, 실행 중일 때만 알 수 있는 정보, 대표적으로 PCB) - 시스템 리소스 정보 (사용중인 시스템 자원에 대한 정보) - 스케쥴링 단위 (프로그램을 실행시키는 단위) b) 리눅스는 다양한 프로세스의 실행 환경을 제공한다. ▶ 유닉스의 철학 - 여러 프로그램이 각자의 일을 하며 서로 유기적으로 동작하여 전체 시스템이 움직이는 모델 - 이처럼 리눅스(유닉스)는 다양한 프로세스를 기반으로 작동하기 때문에, 그만.. 2021. 9. 9.
9. Array(배열) - Heap Sort(2) 0. 시작하기 전에 - 이전 포스팅에서 Heap 자료구조에 대해 간단하게 알아보았다. - 이제 Heap을 이용해 어떻게 정렬을 하는지 알아보자. 1. Heap 구현 a) 파이썬에서 Heap을 구현하는 방법 - 파이썬에서 Heap을 구현려면 2가지만 배우면 된다. ▶ heapq 라이브러리 ▶ heapify 함수 import heapq case = [9, 7, 5, 3, 1] heapq.heapify(case) print(case) #[1,3,5,9,7] 반환 b) heapq 라이브러리는 Min Heap만 만들 수 있다. - heapify 함수를 이용하면 Min Heap을 만들 수 있다. - 하지만, heapq 라이브러리에는 Max Heap을 만들어 주는 함수는 따로 존재하지 않는다. - 그러므로 약간의 노.. 2021. 9. 9.
8. Array(배열) - Heap Sort(1) 1. Heap Sort를 배우기 전에 - Heap Sort라는 이름에서 알 수 있듯이, Heap 자료구조를 이용해 배열을 정렬하는 알고리즘이다. - Heap Sort를 이해하기 위해서는 2가지 개념을 우선적으로 알아야한다. ▶ Tree 자료구조 https://devraphy.tistory.com/45 Data Structure - 트리(Tree) & 이진탐색트리(Binary Search Tree) 1. 트리(Tree) - 트리는 node와 branch를 이용하여 구성된 데이터구조로 사이클이 없다. - 트리는 이진트리(Binary Tree)형태의 구조를 이용하여 탐색(검색) 알고리즘 구현에 많이 사용된다. * 이진트리 - devraphy.tistory.com ▶ Heap 자료구조 https://devrap.. 2021. 9. 9.
8. shell - 리다이렉트와 파이프 1. Standard Stream - 리눅스의 표준 입출력을 말한다. - 리눅스에서는 command로 입력되어 실행되는 3가지 표준 입력스트림이 있다. a) stdin (Standard Input Stream) - 리눅스에서 사용하는 표준 입력스트림 - 기본적으로 터미널에서 입력을 받는 기능이다. b) stdout (Standard Output Stream) - 리눅스에서 사용하는 표준 출력 스트림 - 기본적으로 터미널 화면에 출력하는 기능이다. c) stderr (Standard Error Stream) - 리눅스에서 사용하는 표준 오류 출력 스트림 - 기본적으로 명령어를 틀리게 입력하는 등의 경우, 발생하는 에러를 터미널에 출력하는 기능이다. - 이처럼 모든 스트림은 기본적으로 console에 출력되.. 2021. 9. 7.
7. shell - 파일 권한 및 관리(2) 1. 파일 권한 및 관리를 위한 명령어 a) chmod - 파일 권한을 변경하는 명령어 - 파일 권한을 관리하다 보면, 필요에 의해 파일의 권한을 변경해야 할 때가 있다. - 이 때 사용할 수 있는 명령어가 chmod(change mode)이다. - chmod 명령은 다음과 같은 구조를 가진다. ▶ 더하기(+) 와 빼기(-)의 경우, 기존의 권한을 수정하는 방법이다. - 더하기(+): 기존 권한에 추가적으로 권한을 부여 - 빼기(-): 기존 권한에서 어떤 권한을 제거 ▶ 설정(=)은 기존 권한을 덮어쓰는 방식으로, 새롭게 권한을 설정 및 부여하는 방법이다. ▶ 특정 파일에 대한, 특정 사용자에 대한 권한을 변경하고 싶다면 다음과 같이 명령어를 작성할 수 있다. chmod g+rx test.c test.c.. 2021. 9. 7.
6. shell - 파일 권한 및 관리(1) 1. 권한 설정을 위한 기본 명령어 a) sudo 명령어 권한 설정하기 - sudo를 동반하여 사용하는 명령어는 운영체제의 시스템 설정을 건드린다는 의미다. - 그러므로 아무나 사용할 수 없고 함부로 사용해서도 안된다. - 이와 같은 이유로 sudo 명령어를 사용하기 위해서는 sudo 명령어 사용 권한이 있어야 한다. - sudo 명령어를 사용할 수 있는 사용자 관리 명부가 존재한다. - etc 디렉토리로 이동하여 다음과 같이 vi를 이용해 sudoers 파일을 열어준다. vi sudoers - 하지만 위의 사진과 같이 접근이 거부된 것을 확인할 수 있을 것이다. - sudoers 파일을 접근하기 위해서는 root권한이 필요하기 때문이다. - 그러므로 sudo 명령어를 함께 입력해준다. sudo vi s.. 2021. 9. 7.
7. Array(배열) - Quick Sort(퀵 정렬) 1. Quick Sort란? - Quick Select와 마찬가지로 정렬이 되어있지 않은 배열을 대상으로 사용하는 알고리즘이다. - Quick Select와 동일하게 Partitioning을 이용하여 배열을 정렬한다. a) Quick Sort 정렬과정 b) Quick Sort의 시간복잡도 c) Quick Sort의 안정성(Stability) - Quick Sort는 불안정한(unstable) 정렬 알고리즘이다. 2. 코드구현 from typing import List import random def quick_sort(case:List[int], begin_idx:int, last_idx:int) -> List[int]: length = last_idx - begin_idx + 1 if length 2021. 9. 6.
5. shell - 다중 사용자 1. shell 이란? - shell은 사용자와 컴퓨터 하드웨어 또는 운영체제 사이의 interface다. - 사용자가 컴퓨터와 소통할 수 있도록 사용자가 입력한 명령어를 해석하여 커널에게 전달하는 역할을 한다. 2. shell의 종류 a) Bash(Born again shell) - GNU 프로젝트의 일환으로 개발된 shell - 리눅스의 기본(default) shell b) Korn shell - UNIX에서 가장 많이 쓰이는 shell - 이 외에 C - shell, Bourne - shell 등이 존재한다. - shell 마다 명령어의 형식이 조금씩 다르다. - 하지만 UNIX를 기반에 두고 있기에 어느정도 일맥상통한 부분이 존재한다. 3. Bash의 기본 명령어 - 다중 사용자 - 터미널을 이용.. 2021. 9. 6.