[운영체제] - 프로세스 간 통신 (IPC: Inter Process Communication)
·
💻 Computer Science/운영체제
프로세스 간 통신 (IPC: Inter Process Communication)프로세스나 쓰레드는 독립적으로 실행된다. 프로세스나 쓰레드가 협업하거나 데이터를 병렬로 처리하기 위해서는 데이터를 주고 받아야하는데, 하나의 프로세스에 속한 쓰레드끼리 데이터를 주고 받는 것은 쉽다. 그러나, 서로 다른 프로세스는 메모리 영역이 다르기에 공유된 메모리를 통하여 통신하는 것이 어렵다.  프로세스 간 통신(Inter Process Communication)은 운영체제가 제공하는 프로세스끼리 쉽게 데이터를 주고 받는 통신 방법이다. 대표적인 프로세스 간 통신의 종류는 다음과 같다.공유 메모리나 공유 파일을 이용한 통신: 가장 기본적인 프로세스 간 통신 방법으로, 일정한 메모리 영역이나 파일을 공유하고 이를 통하여 데..
[운영체제] - CPU 스케줄링 (CPU Scheduling)
·
💻 Computer Science/운영체제
CPU 스케줄링 (CPU Scheduling)스케줄링이란 여러 프로세스의 상황을 고려하여 CPU와 시스템 자원을 어떻게 배정할지 결정하는 일을 말한다. CPU 스케줄러(프로세스 스케줄러)는 프로세스가 생성된 후 종료될 때까지의 모든 상태 변화를 조정한다. CPU 스케줄러는 관리의 범주를 나누어 스케줄링을 진행하는데 규모에 따라 다음으로 분류된다.고수준 스케줄링(High Level Scheduling): 시스템 내의 전체 작업 수를 조절하는 것으로, 시스템 내에서 동시에 실행 가능한 프로세스의 총 개수를 결정한다. 또한 전체 시스템의 부하를 고려하여 작업의 시작 여부를 결정한다.저수준 스케줄링(Low Level Scheduling): 활성화된 프로세스들의 실제 진행을 담당한다.중간 수준 스케줄링(Middl..
[운영체제] - 쓰레드 (Thread)
·
💻 Computer Science/운영체제
쓰레드 (Thread)프로세스가 생성되면 CPU 스케줄러는 프로세스가 해야 할 작업을 CPU에 전달하고 실제 작업은 CPU에서 진행된다. 이때 CPU 스케줄러가 CPU에 전달하는 실행 단위가 쓰레드이다. 즉, 쓰레드란 프로세스의 코드에 정의된 절차에 따라 CPU에 작업 요청을 하는 실행 단위이다. 운영체제 입장에서 작업 단위는 프로세스이고, CPU 입장에서 작업 단위는 쓰레드인 것이다. CPU와 프로그래밍 기술이 발전함에 따라 멀티 코어를 지원하는 CPU가 생겨갔고 멀티쓰레드를 지원하기 시작했다. 현대의 운영체제는 프로세스를 다양한 쓰레드로 나누어 여러 개의 코어에 배분하여 시스템의 효율을 높인다. 잠깐 쓰레드와 관련된 용어를 살펴보도록 하겠다. 헷갈리지 않도록 잘 정리하도록 하자.멀티쓰레드(Multi-..
[운영체제] - 프로세스 (Process)
·
💻 Computer Science/운영체제
프로세스 (Process)프로세스는 운영체제에서 하나의 작업 단위이며, 실행 중인 프로그램을 의미한다. 프로그램은 저장장치에 저장된 정적인 상태이고, 프로세스는 실행을 위하여 메모리에 올라온 동적인 상태를 말한다. 프로그램이 프로세스로 전환되기 위해서는 프로세스 제어 블록(PCB)이 필요하다. 프로그램이 프로세스가 되려면 운영체제로부터 프로세스 제어 블록을 덩어야 하고, 프로세스가 종료되면 해당 프로세스 제어 블록은 폐기된다.프로세스 구조프로세스는 코드 영역, 데이터 영역, 스택 영역으로 구성되어 있다.코드 영역(Code Area): 프로그램의 본문이 기술된 곳으로, 개발자가 작성한 프로그램은 코드 영역으로 탑재되고 읽기 전용으로 처리된다.데이터 영역(Data Area): 코드를 실행하며 사용하는 변수,..
[운영체제] - 컴퓨터 성능 향상 (Improve Computer Performance)
·
💻 Computer Science/운영체제
폰 노이만 구조 (Von Neumann Architecture)현대 컴퓨터는 대부분 "폰 노이만 구조"를 따른다. 이는 CPU, 메모리, 입출력장치, 저장장치가 버스로 연결된 구조로, 하드웨어는 그대로 두고 작업을 위한 프로그램만 교체하여 메모리에 올리는 방식으로 동작한다. 폰 노이만 구조에서 가장 중요한 개념은 바로 "모든 프로그램은 메모리에 올라와야 실행할 수 있다"는 것이다. 저장장치에 있는 프로그램을 실행하기 위해서는 프로그램이 메모리에 올라와야 하는 것이다. 운영체제 또한 프로그램이기에 메모리에 올라와야 실행할 수 있다. 컴퓨터의 전원을 켰을 때 운영체제를 메모리에 올려서 실행해야 하는데 이를 "부팅(Booting)"이라고 한다. 부팅 과정은 다음과 같이 이루어진다.사용자가 컴퓨터의 전원을 켜면..
[Github] - Git과 Github로 협업 하는 방법 (Pull Request: PR)
·
🛠 Tool/Git/Github
풀 리퀘스트(Pull Request), PR이라고 불리는 이것은 깃허브의 핵심입니다. 푸쉬 권한이 없는 저장소에 작성한 코드를 제안하고 리뷰를 거친 후 프로젝트에 병합(Merge)할 수 있도록 요청하는 것입니다. 오픈 소스 프로젝트에 기여하거나, 협업할 때 풀 리퀘스트를 자주 사용하게 됩니다. 지금부터 풀 리퀘스트를 하는 방법에 대해 자세히 알아보도록 하겠습니다. Pull Request (PR) Pull Request를 하기 위해서는 다음의 단계를 거칩니다. PR을 보내고자 하는 저장소 Fork Branch 생성 및 코드 작업 Pull Request 생성 코드 리뷰 및 Merge PR Merge 확인 후, 코드 동기화 및 브랜치 삭제 1. Fork Fork란 다른 저장소의 내용을 자신의 계정으로 복제하는..
[Github] - 원격 저장소에서 코드 가져오는 방법 (git clone, git pull)
·
🛠 Tool/Git/Github
git push를 통하여 원격 저장소에서 코드를 보관했다면, 이번에는 원격 저장소에 저장된 코드를 가져오는 방법에 대해 알아보도록 하겠습니다. git clone git clone 명령어는 원격 저장소로부터 프로젝트를 복제하는 명령어입니다. git clone을 사용하면 원격 저장소의 모든 파일과 히스토리를 로컬로 가져와 작업할 수 있도록 합니다. git clone 명령어를 사용하는 방법은 다음과 같습니다. git clone을 사용하기 전 먼저 가져오고자 하는 원격 Repository로 접속합니다. " Code" 라고 적힌 초록색 버튼을 클릭한 후, "https://~~" 원격 저장소 주소를 복사합니다. 자신이 작업을 수행하고자 하는 로컬 폴더로 돌아가 git clone 명령어를 수행합니다. # 원격 저장소..
loading