목록프로그래밍👩🏻💻 (110)
suyeonme
프로세스(Process)란? 프로그램이 실행되면 프로세스가 된다. 프로세스는 컴퓨터 시스템의 작업 단위로 태스크(task)라고도 부른다. 프로그램: 저장장치에 저장되어있는정적인 상태 프로세스: 실행을 위해 메모리에 올라온 동적인 상태 즉, 프로그램을 더블 클릭하여 실행하면, 운영체제는 프로그램을 메모리의 적당한 위치로 가져와서 프로세스 제어 블록을 생성한다. 시분할 방식 CPU가 1개인 컴퓨터에서 여러개의 프로세스를 동시에 실행한다. CPU가 시간을 쪼개어 여러 프로세스에 적당히 배분하기때문에 사용자는 여러개의 프로세스가 동시에 실행하는 것처럼 느낄 수 있다. 프로세스 제어 블록(Process Control Block) 하나의 프로세스를 실행하려면 프로세스 구분자, 메모리 관련 정보, 프로그램 카운터와 ..
CPU와 메모리, 주변 장치의 작업속도가 다르다. CPU는 CPU 내부버스로 연결되어있고 메모리, 주변 장치는 시스템 버스로 연결되어있다. 따라서 CPU에 비해 메모리가 느린 것은 물론이고 프로그램과 데이터를 보관하는 하드디스크의 속도는 더욱 느리다. 버퍼(Buffer) 속도에 차이가 있는 두 장치 사이에서 그 차이를 완화하는 역할을 한다. 느린 입출력장치에서 데이터를 읽을 때마다 하나씩 전송하면 작업량에 비해 실제로 전송되는 데이터의 양이 매우 작다. 버퍼를 사용하여 일정량의 데이터를 모아 한꺼번에 전송하면 적은 노력으로 많은 양의 데이터를 옮길 수 있다. 예시: 계란을 하나씩 옮기는 것보다 바구니에 여러개 담아 옮기는 것이 더 빠르다. 버퍼의 종류 하드디스크의 메모리 버퍼 동영상 스트리밍 (네트워크에..
BufferedReader/BufferedWriter란? BufferedReader/BufferedWriter는 버퍼(buffer)를 사용하여 읽기/쓰기를 하는 함수로, 입력된 데이터를 바로 전달하지 않고 버퍼에 저장해두었다가 한번에 전달한다. 외부 장치와 데이터 입출력시, 입출력시마다 데이터를 이동시키는 것보다 메모리 버퍼에 데이터를 저장하고 묶어서 한번에 이동시키는 것이 더 효율적이다. Scanner vs BufferedReader Scanner space, enter를 경계로 입력값을 인식 데이터를 따로 가공하지않아도 된다. BufferedReader enter만 경계로 입력값을 인식 데이터가 String으로 고정되어 추가적인 가공(데이터를 구분하여 나누는)이 필요하다. 데이터의 양이 많은 경우, ..
헤드 퍼스트 디자인 패턴을 읽고 정리한 내용입니다. 템플릿 메소드 패턴(Template Method Pattern)이란? 템플릿 메소드 패턴은 즉 일련의 단계로 알고리즘을 정의한 메소드이다. 여러 단계중 하나 이상의 단계가 추상 메소드로 정의되며 그 추상 메소드는 서브 클래스에서 구현한다. 템플릿 메소드 패턴 구현 구현 순서 prepareRecipe()는 어떤 알고리즘의 템플릿 역할을 한다. 템플릿 메소드는 서브 클래스에서 오버라이드하지 못하도록 final로 선언한다. 템플릿 메소드의 일부 알고리즘(추상 메소드)은 서브 클래스에서 구현한다. public abstract CaffeineBeverage { final void prepareRecipe() { // 템플릿 메소드 boilWater(); brew..
리눅스의 기본 폴더 목록을 정리한 내용이다. 폴더 내용 / 최상위 폴더, Root directory /bin Binary의 약자로, 관리자를 포함한 모든 사용자를 위한 공통 명령어가 모여있는 폴더 (명령어 바이너리) /boot 부팅과 관련된 파일이 모여있는 폴더 /dev Device의 약자로 장치 파일이 모여있는 폴더 (장치 파일: 파일 시스템안에 보이는 장치 드라이버의 인터페이스) /etc 환경 설정 파일이 모여있는 폴더 (확장자: .conf, .cnf등) /home 개별 사용자의 home 폴더 /lib 각종 라이브러리가 모여있는 폴더 /root root계정의 home directory /usr 사용자 읽기전용(readonly) 파일들을 계층형으로 보관한 폴더 (사용자 유틸리티, 애플리케이션 보관등) ..
hosts 파일이란? hosts 파일은 운영 체제가 호스트 이름을 IP 주소에 매핑할 때 사용하는 컴퓨터 파일이다. 이 hosts 파일은 플레인 텍스트 파일이며 전통적으로 hosts라는 이름을 사용한다. hosts파일에 ip address와 매칭되는 도메인명을 작성하면 해당 도메인으로 접속을 하면 연결된 ip로 바이패스를 해준다. 즉 hosts 파일는 DNS보다 먼저 호스트명을 IP로 변경해 주는 파일이다. (hosts 파일 = mapping table) /etc/hosts 1. hosts 파일의 내용 확인 $ cat /etc/hosts 2. hosts 파일 내용 수정 hosts 파일을 수정하기 위해서는 관리자 권한이 필요하다. 따라서 sudo 명령어를 사용해야한다. $ sudo vi /etc/hosts..
너비 우선 탐색(Breath-first-search, BFS) 시작 정점으로부터 가까운 정점을 먼저 방문하고 멀리 떨어져 있는 정점을 나중에 방문하여 그래프를 순회한다. 시작 정점을 방문한 뒤, 깊이가 1인 모든 정점을 방문하고, 그다음에는 깊이가 2인 모든 정점을 방문하는식으로 깊이를 더해가며 해당 깊이에 있는 모든 정점을 방문하며 나아가다가 더 이상 방문할 정점이 없을 때 탐색을 종료한다. 두 노드 사이의 최단 경로 혹은 임의의 경로를 찾고 싶을 때 사용한다. 큐(queue)를 사용하여 구현한다. (방문한 노드들을 차례로 저장한 후 꺼낸다.) 너비 우선 탐색의 동작 방식 루트 노드를 방문한다. 큐에 방문된 노드를 삽입(enqueue)한다. 초기 상태의 큐에는 시작 노드만이 저장된다. 큐에서 꺼낸 노드..
운영 체제의 구조 운영체제는 크게 커널(Kernel)과 인터페이스(Interface)로 나뉜다. 커널(Kernal) 운영체제의 핵심 기능을 모아놓은 것으로 운영체제의 성능은 커널이 좌우한다. (프로세스 관리, 메모리 관리, 파일 시스템 관리, 입출력 관리, 프로세스간 통신 관리등) 자동차에 비유하면 엔진에 해당한다. 같은 커널을 사용하더라도 다른 인터페이스를 가진 형태로 제작할 수 있다.(e.g. 유닉스, 매킨토시) 시스템 호출을 제어한다. 커널은 사용자나 응용프로그램으로부터 컴퓨터 자원을 보호하기 위해 자원에 직접 접근을 차단한다. 따라서 자원을 이용하기 위해서는 시스템 호출이라는 인터페이스를 사용해야한다. (e.g. C언어의 printf()함수) 드라이버를 사용하여 다양한 종류의 하드웨어를 커널에 연..