반응형
2022.10.04 - [CS 기초 지식/[운영체제]] - 멀티 프로세스와 멀티 스레드란 ?Process ( 프로세스 )“프로그램 ( 어떤 작업을 위해 실행할 수 있는 파일 .exe )이 메모리에 올라와 운영체제로 부터 CPU를 할당받고 프로그램이 연속적으로 실행되고있는 상태.” ( 일을 처리하는 일련의 과정 ) 음식을 예로 우리가 치킨을 먹기 위해 BBQ 치킨에 갔다고 가정해봅시다.BBQ에가서 치킨을 주문시키면 BBQ의 레시피를 주는 것이아니라 BBQ만의 특별한 레시피를 가지고 치킨을 만들어 주겠죠 ? 여기서 레시피가 코드 파일 ( 프로그램 )이고, 치킨은 프로그램이 실행 되어 우리가 사용할 수 있는 프로세스 입니다.레시피를 통해 치킨을 만드는 것처럼, 코드 파일( 프로그램 )을 실행 시켜 "프로세..
문제 설명 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다. 제한 조건 strings는 길이 1 이상, 50이하인 배열입니다. strings의 원소는 소문자 알파벳으로 이루어져 있습니다. strings의 원소는 길이 1 이상, 100이하인 문자열입니다. 모든 strings의 원소의 길이는 n보다 큽니다. 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다. 입출력 예 입출력 예 1 "sun", "bed", "car"..
컴퓨터는 크게 2가지로 구분할 수 있습니다. 물리적으로 만질 수 있는 하드웨어(키보드, 모니터, 컴퓨터 본체와 본체 안에 있는 CPU, 메모리 등) 물리적으로 존재하지 않는 소프트웨어 그리고, 소프트웨어는 운영체제(Linux, MacOS, Windows 등)와 그 위에 설치되는 프로그램인 응용 프로그램 (Exel, Chrome 등)으로 다시 나눌 수 있습니다. 그리고 운영체제는 커널(Kernel)과 시스템 프로그램으로 구분됩니다. 커널(Kernel)과 시스템 프로그램 커널은 운영체제의 핵심부분으로써 주로 디바이스 관리, 프로세스 관리, 메모리 관리, 시스템 콜 제공 같은 기능을 관리하는 등, 컴퓨터 자원을 관리합니다. 하지만 커널은 항상 컴퓨터 자원들만 바라보고 있어 사용자와 직접적인 상호작용은 하지 않..
Shell이란, 사용자의 명령어를 운영체제가 알아들을 수 있도록 해석하고 커널에게 전달합니다. 그리고 커널은 해석된 명령어를 받아 하드웨어에 직접적으로 명령을 내립니다. shell의 예시로 우리가 cmd에서 명령어를 칠 때를 봅시다. shj@DESKTOP-DS69STB:~$ ls -l 저는 이와 같은 ls -l 이라는 명령어를 쳤습니다. 하지만 해석하지못하면, 하드웨어는 "이게 뭔 말이야"라고 하며 이해하기 힘듭니다. 그래서 Shell이 필요하고 Shell이 "ls -l" 은 "현재 디렉토리에 있는 내용들을 -l 옵션으로 긴 목록 형식으로 출력해주세요"라고 해석해줍니다. 그러면 해석된 명령을 커널에게 전달하고 커널은 하드웨어에게 해석된 명령을 실행하라합니다. Shell의 주요 기능들 사용자와 커널 사이에..
개발을 하다보면 Linux 라는 단어에 대해 수도 없이 들어봤을겁니다. Linux가 운영체제인것 까진 그래도 알겠지만 정확히 뭐고 왜 사용하는지에 대해선 알지 못하기 때문에 이번 포스팅을 통해 Linux가 무엇인지, 왜 사용하는지?에 대해 간단히 알아보고자 합니다. UNIX 리눅스를 알기 전 먼저 리눅스의 조상인 유닉스에 대해 알아야 합니다. 유닉스에 대해 간단하게 알아보자면, 1965년 MIT, AT&T 벨 연구소, General Electric 소속 개발자들이 모여 멀티태스킹(다중작업)을 지원하는 멀틱스(Multics)라는 운영체제를 개발하기 시작했습니다. 하지만 이 당시 멀티태스킹 작업은 너무나도 어려운 작업이였기 때문에 실패했었습니다. 그 이후 프로젝트를 만들던 직원들이 따로 나와 멀틱스 프로젝트..
개발을 하다보면 자연스럽게 사용하게 되는 git과 Github 사실 저는 이 두 개가 같은 건줄알고 Github 줄인 말이 git인줄 알았습니다 ㅋㅋ; 하지만 CS 면접 나오는 대표적인 질문들 중 하나이기에 이번 포스팅으로 차이점을 알아보고자 합니다. 📌 Git ( 깃 ) 이란 ? 로컬 파일의 변경사항을 기록하고 해당 파일에 대한 여러 사용자 간의 작업을 조율하기 위한 분산형 버전 관리 시스템(VCS : Version Control System) 입니다. Git 이 왜 필요한지에 대해 살펴보자면, 우리가 과제를 제출할 때를 봅시다. 처음에 과제를 완성했다하고 이름을 저장했을 때는 "김김씨 과제.pdf"라고 저장할 것입니다. 근데, 다시 확인을 해보니 수정이 필요해 이전 파일이 필요할지도 모르니 복사하여 ..