전체 글 410

ubuntu 프로세스 실습

systemctl systemctl이라는 서비스 제어 명령어가 있습니다. service라는 명령어도 있지만 service명령어는 systemctl의 wrapper script입니다. 그렇기 때문에 systemctl이 권장되는 것 같습니다. 다음명령어로 system에 등록된 서비스 목록을 전부 볼 수 있다. sudo systemctl list-unit-files | grep 위 명령어로 서비스 목록을 보고 사용하려는 프로그램이 현제 사용중인지 아닌지도 체크할 수 있습니다. 프로세스 실행 명령어 systemctl start ps ps -ef 명령어를 통해 실행중인 프로세스에 대해서 다 볼 수 있습니다. 프로세스 종료 명령어 kill -l 위 명령어로 종료방법에 대한 리스트를 볼 수 있다. 위 리스트 중에 s..

LINUX 2023.02.12

프로세스?

프로세스란? 컴퓨터에 기본적인 필수 장치중 CPU(연산장치)와 RAM(저장장치)이 있습니다. 하지만 이 둘만 있어서는 컴퓨터는 제대로 작동할 수 없습니다. 이 두가지 장치만 있다고 하고 ram이 1gb라고 할때 문자를 10억개정도밖에 저장할 수 없기때문에 프로그램을 돌리기엔 턱없이 부족한 양이며 ram은 휘발성이기때문에 전력공급이 중단되면 저장내용이 다 날라갈 것입니다. 그럼 ram에 있는 내용을 영구히 저장하기위해 HDD와 SSD라는 저장장치가 등장했습니다. 그렇다면 예를 들어 HDD에 tomcat8을 설치한다고 가정을 해봅니다. 그럼 HDD에 tomcat8이라는 프로그램이 설치가 됐습니다. 그럼 이 HDD에저장된 프로그램을 RAM에 끌어 올리는 행위를 load 라고 합니다. 이렇게 tomcat을 lo..

cs 2023.02.12

Cpython 병렬성과 동시성 /(2) 멀티 스레딩

멀티 스레딩 CPython은 스레드를 생성, 스폰, 제어 할 수 있는 파이썬용 고수준 API와 저수준 API를 제공한다. pthread: POSIX 스레드 ( 리눅스, macos) nt threads: NT 스레드 ( 윈도우 ) 프로세스는 다음과 같은 요소들을 같는다. 서브루틴의 스택 메모리와 힙 운영체제의 파일, 잠금, 소켓에 접근할 수 있는 권한 단일 프로세스의 가장 큰 제약은 운영체제가 실행 파일마다 하나의 프로그램 카운터를 가진다는 것이다. 이 문제를 해겨라기 위해 최신 운영 체제는 실행을 여러 스레드로 분기할 수 있도록 운영체제에 신호를 보낼 수 있다. 각 스레드는 저마다 다른 프로그램 카운터를 가지지만 호스트 프로세스와 리소스를 공유한다. 또한 각 스레드는 별도의 콜 스택을 가지고 있기 때문에..

CPython 2023.02.12

Cpython 병렬성과 동시성 /(1) 멀티 프로세싱

CPython은 병렬성과 동시성에 대해 다양한 접근방식을 제공한다. 주어진 상황에 따라 적절한 방식을 고르면 된다. 버마다의 장단점이 있는 각각의 동시성 구현을 주어진 상황에 따라 선택해서 사용할 수 있다. Cpython은 기본적으로 네가지 모데을 제공한다. threading : 동시실행 O 병렬실행 X multiprocessing : 동시실행 O 병렬실행 X asyncio : 동시실행 O 병렬실행 X subinterpreters : 동시실행 O 병렬실행 X 프로세스의 구조 운영체제는 실행 중인 프로세스를 제어할 책임이 있다. 그것이 사용자 인터페이스 앱일 수 도 있고 네트워크 서비스나 운영체제 서비스 처럼 백그라운드로 동작할 수 도 있다. 운영체제는 프로세스를 제어하기 위해 새 프로세스를 시작하는 AP..

CPython 2023.02.12

병렬성과 동시성

병렬성과 동시성 최초의 컴퓨터는 한번에 한 작업만 실행하도록 설계됐고 주로 계산 수학 분야의 작업을 처리했습니다. 시간이 지나며 컴퓨터는 다양한 종류의 입력을 처리하고 네트워크 계념이 생기며 한번에 한 작업만 하는 일은 아무리 연산이 빠른 기계라고해도 프로그램에서 락이 걸리면 기다리기만 해야하는 상황이 생기던 시절이 있었다고 합니다. 이로 인해 생긴 혁신이 멀티태스킹 운영 체제로 이동한 것입니다. 멀티 태스킹은 현대의 다중 코어 CPU가 등장하기 이전에도 필요했기 때문에 운영 체제들은 이전부터 여러 프로세스끼리 시스템 자원을 공유하는 방법을 제공해왔습니다. 모든 운영 체제의 핵심 기능은 실행중인 프로세스를 관리하는 것입니다. 모든 프로세스는 주인을 가지고 있고 메모리와 CPU같은 자원을 요청할 수 있습니..

cs 2023.02.06

Linux/ubuntu PPA 퍼스널 패키지 아카이브(개인저장소)

PPA이란? 리눅스는 업데이트를 각 프로그램이 직접 하는 것이 아닌 패키지 저장소를 이용하여 업데이트를 해야한다. 하지만 우분투 공식 패키지 저장소에서는 유명한 프로그램이 아닌 일반 프로그램의 최신 버전이 담겨있지 않기에 우리는 이러한 업데이트/설치를 PPA에서 할 수 있게 된 것이다. 즉, 개인 패키지 저장소란 뜻을 가진 PPA는 런치패드에서 제공하는 우분투의 공식 패키지 저장소에 없는 서드 파티 소프트웨어를 위한 개인용 소프트웨어 패키지 저장소이다. 쉽게 풀어서 설명하자면 우분투의 공식 패키지 정장소에 없는 내가 원하는버전의 소프트웨어나 소프트웨어를 직접 찾아서 개인저장소에 추가하는 방법 ubuntu in launchpad link 예를들어 현제 톰캣을 공식 패키지 저장소에서 다운받으려고하는데 9버전..

LINUX 2023.02.04

redis 자료구조 - LISTS

LISTS Lists는 key와 value가 일 대 다 관계입니다. value는 입력된 순서대로 저장됩니다. Lists는 주로 큐 와 스택으로 사용됩니다. 큐는 들어오는 데이터를 순서대로 처리할때 사용 스택은 웹브라우져의 뒤로가기처럼 되돌아 갈때 사용 키의 생성과 삭제 value가 저장되면 리스트가 생성되고 키에 value가 하나도 없으면 키는 삭제됩니다. 즉 키의 생성과 삭제를 위한 별도의 작업은 필요없습니다. 명령어 요약 SET (PUSH): LPUSH, RPUSH, LPUSHX, RPUSHX, LSET, LINSERT, RPOPLPUSH GET: LRANGE, LINDEX, LLEN POP: LPOP, RPOP, BLPOP, BRPOP REM: LREM, LTRIM BLOCK: BLPOP, BRPO..

Redis 2023.02.04

redis 자료구조 - STRINGS

Strings? Strings는 key와 value가 일 대 일 관계입니다. 반면 Lists, Sets, Sorted Sets, Hashes는 일 대 다 관계입니다. data Type? Binayr-safe 를 지원하기때문에 숫자, 문자열 이미지 등을 사용할 수 있다. maximum length key와 value 모두 최대 길이는 512MB입니다. key design 적절한 key 사이지를 유지하는 것이 좋다. 사용자 보기 관점: "user_1000_email" 메모리 절약 관점: "u1000e" 네이밍 권장 규칙 예를 들어 '' 등을 사용해서 key를 구성하면 쉽게 알아볼 수 있습니다. 특히, Enterprise 버전에서 SQL(select) 사용을 고려한다면 다른 구분자보다 '..

Redis 2023.02.04

Redis 기본 개념

redis? 데이터 저장소로 디스크가 아닌 메모리를 사용합니다. 이 말은 즉 컴퓨터 구조상 때려죽어도 ssd나 hdd를 저장소로 사용하는 시스템 보다 빠를 수 밖에 없습니다. 그리고 메모리 데이터는 휘발성이기 때문에 이를 보완하는 데이터의 안전한 보관과 백업을 위해 다른 서버의 메모리에 실시간으로 복사본을 넘길 수 있고, 디스크에 저장하는 방법을 제공합니다. 특징 이는 서버cpu에 따라 다르지만 일반적으로 5만 ~25만회를 실행합니다. 메모리를 저장소로 사용하기때문에 빠를 수 밖에 없다. Redis Server Instance는 1개 프로세스로 수행됩니다. 그렇기 대문에 평상 시 CPU 1 core만 사용합니다. 그러므로 서버 머신 이나 vm에 여러개의 redis server를 사용할 수 있습니다. 레디..

Redis 2023.01.25