본문 바로가기
728x90

넓고 얕은 CS 지식17

동기 & 비동기 / 블로킹 & 논블로킹 3분 요약 정리 💡 동기 & 비동기 / 블로킹 & 논블로킹은 같거나 비슷한 개념이 아니라 함께 사용되므로 한 번에 정리한다. 동기 & 비동기 처리해야 할 작업을 어떠한 '흐름'으로 처리할 것인가에 대한 관점으로 나뉜다. 동기(Synchronous) 작업을 동시에 수행하거나, 동시에 끝나거나, 다른 작업이 끝나는 동시에 시작한다. 함수 A가 함수 B의 작업 완료 여부를 확인한다. 비동기(Asynchronous) 함수 A가 함수 B를 호출한 후에 함수 B의 작업 완료 여부는 신경 쓰지 않는다. 바로 시작한다. 블로킹 & 논블로킹 제어권이 누구에게 있느냐에 대한 관점으로 나뉜다. 블로킹(Blocking) A 함수가 B 함수를 호출하면 B 함수에게 제어권을 넘겨준다. B는 A로부터 받은 제어권으로 함수를 실행하고 A는 B에게 .. 2023. 3. 7.
프로세스와 스레드 1분 요약 정리 프로그램과 프로세스 프로그램이 실행되면 프로세스 인스턴스가 생성된다. 프로그램 어떤 작업을 하기 위해 실행할 수 있는 파일 프로세스 메모리에 적재되고 CPU 자원을 할당받아 프로그램이 실행되고 있는 상태 서로 다른 프로세스 간의 메모리 공간 접근은 허용되지 않는다. 하나의 프로그램은 하나 이상의 프로세스를 가지고 있고, 하나의 프로세스는 반드시 하나 이상의 스레드를 가지고 있다. 프로세스 구조 코드 영역 프로그래머가 작성한 프로그램이 코드 영역에 작성된다. 힙 영역 동적으로 할당되는 데이터를 위해 존재한다. 스택 영역 지역 변수 및 함수 호출 같은 임시 데이터를 관리한다. 데이터 영역 코드가 실행되면서 사용한 변수나 파일들의 각종 데이터가 모여있다. 정적 영역 : 코드 영역, 데이터 영역 동적 영역 : .. 2023. 3. 6.
디자인 패턴 - 싱글톤 패턴(Singleton Pattern) 1분 요약 정리(스프링에서의 싱글톤 패턴) 싱글톤 패턴(Singleton Pattern) 애플리케이션이 시작될 때 어떤 클래스가 최초로 한 번만 메모리를 할당하고, 해당 메모리에 인스턴스를 만들어 여러 객체에서 하나의 인스턴스를 참조하여 사용하는 패턴 장점 인스턴스가 필요할 때 기존의 인스턴스를 사용하므로 new를 통해 같은 객체를 여러 개 생성하여 메모리를 낭비하는 것을 방지할 수 있다. 싱글톤으로 구현한 인스턴스는 전역이므로, 여러 객체가 공유하여 사용하는 데에서 오는 여러 장점이 있다. 단점 싱글톤 인스턴스에 많은 객체가 결합되어 있어 결합도가 높아지면 문제가 생겼을 때 에러 복구하기가 굉장히 힘들다 멀티 스레드 환경해서 동기화 처리가 제대로 되지 않으면 인스턴스가 2개 생성되는 문제가 발생할 수 있다는 점이 있다. 싱글톤 패턴을 구현하는 .. 2023. 3. 4.
컨텍스트 스위칭 & PCB 10초 요약 정리 컨텍스트 스위칭(Context Switching) 2개 이상의 프로세스가 실행 중일 때 기존에 실행중인 프로세스를 중단하여 PCB에 저장하고, 대기 중인 프로세스를 실행시키는 것을 말한다. 이 사이에 CPU는 아무 작업을 하지 않기 때문에 컨텍스트 스위칭이 자주 일어나면 성능이 저하된다. PCB(Process Control Block) 운영체제가 프로세스를 제어하기 위해 프로세스의 상태 정보를 저장하는 구조체를 말한다. 2023. 2. 18.
Git과 명령어 Git Linux OS를 만든 리누스 토르발즈가 만든 프로그램이다. Linux는 오픈 소스 방식의 운영체제로, 세상에 등장한 이후부터 약 26년 간 1만 명이 넘는 개발자들에 의해 2천만 줄이 넘는 소스코드가 작성되었다. Linux의 개발자인 리누스 토르발즈는 Linux의 발전에 있어 기존의 오픈 소스 방식에 큰 불편함을 느끼고 있었다. 그는 이러한 불편함을 줄이고 작업 환경을 개선하기 위해 Git이라는 프로그램을 출시한다. GIt의 기능 Git은 파일을 관리해주는 프로그램이며 크게 버전관리, 백업, 협업(공유 및 합병)의 기능을 가지고 있다. Github Git이 로컬에서 버전을 관리해주는 프로그램이라면 Github는 원격 저장소의 기능을 제공해주는 서비스 중 하나이다. 쉽게 이야기하면, Git이 설치.. 2022. 8. 29.
리눅스 터미널 아직까지 CLI를 사용하는 이유? 사용자 중심의 인터페이스인 GUI가 생긴 지도 20년이 넘었는데 왜 아직까지 CLI를 사용하고 있는 것일까? 그 이유는 의외로 간단하다. CLI는 GUI보다 안정적이고 가벼우며 빠르기 때문이다. CLI는 방대한 양의 데이터를 다루는 작업에서 효과적인 인터페이스이며 현업에서는 필수적이다. 리눅스 터미널 관련 용어, 명령어 정리 리눅스 터미널의 용어 프롬프트(Prompt) : 명령줄 대기모드, 터미널에서 명령을 입력하고 입력 내용을 확인할 수 있는 한 줄의 공간 / : 루트 티렉터리 ~ : 홈 디렉터리 -r : recursive의 약자로 특정 행동을 순환적으로 반볻 -f : force의 약자로 어떤 행동을 강제 -rf : 일반적으로 rm이나 cf에서 -rf를 사용, rm에.. 2022. 8. 26.
프론트엔드와 백엔드의 차이 ※ 본 게시물은 컴퓨터 및 프로그래밍을 공부 중인 비전공자가 개인적인 공부를 위해 적어둔 것으로 내용이 정확하지 않을 수 있으며, 언제든지 추가되거나 수정될 수 있음. 이전 글을 읽고 오시면 보다 쉽게 이해할 수 있습니다 :) 웹 클라이언트와 웹 서버(작성중) ※ 본 게시물은 컴퓨터 및 프로그래밍을 공부중인 비전공자가 개인적인 공부를 위해 적어둔 게시물로 내용이 정확하지 않을 수 있으며, 언제든지 추가되거나 수정될 수 있음. 당신은 쇼핑몰을 suzuworld.tistory.com 웹 개발자에 관심이 있는 사람이라면 누구나 들어봤을 단어인 프론트엔드와 백엔드. 오늘은 이 두 단어의 정확한 뜻을 알아보고자 한다. 위의 그림은 가상 쇼핑몰 앱의 구동 방식이다. 우리가 쇼핑몰 앱을 이용하기 위해서는 클라이언트라.. 2022. 8. 22.
웹 클라이언트와 웹 서버 ※ 본 게시물은 컴퓨터 및 프로그래밍을 공부 중인 비전공자가 개인적인 공부를 위해 적어둔 것으로 내용이 정확하지 않을 수 있으며, 언제든지 추가되거나 수정될 수 있음. 당신은 쇼핑몰을 운영하는 사장이며, 상품의 온라인 판매를 위해 쇼핑몰 앱을 만들었다고 가정하자. 당신은 앱에 판매하려고 하는 상품을 등록할 것이다. 이때 상품에 대한 정보가 모두 앱 안에 들어가 있다면 어떻게 될까? 새로운 상품을 등록하거나 상품의 재고 현황 반영 등 수정이 필요할 때마다 일일이 앱 전체를 업데이트해야 한다. 매장 내에 재고가 하나 줄어들었다면 앱 내의 재고 현황에 반영해야 할 텐데 변경사항이 있을 때마다 매번 업데이트한다면 여간 번거로운 일이 아닐 수 없다. 현실에서는 실현 불가능에 가까운 운영방식이다. 온라인 결제 역시.. 2022. 8. 22.
728x90