전체 글

전체 글

    프로세스 제어 블록과 문맥교환

    프로세스 제어 블록 특정 프로세스에 대한 중요한 정보를 저장하고 있는 자료구조로, 모든 프로세스는 고유의 프로세스 제어 블록을 가진다. 프로세스 제어 블록은 프로세스 생성 시 만들어져서 프로세스가 실행을 완료하면 폐기된다. 프로세스는 CPU를 할당받아 작업을 처리하다가 프로세스 전환이 발생하면 진행하던 작업을 저장하고 CPU를 반환한다. 이때 작업의 진행 상황을 프로세스 제어 블록에 저장하고 다시 CPU를 할당받게 되면 저장된 내용을 불러와 이전에 종료했던 시점부터 작업을 다시 수행한다. 프로세스의 상태 생성 상태 프로그램을 메모리에 가져와 실행 준비가 완료된 상태 준비 상태 실행을 기다리는 모든 프로세스가 자기 차례를 기다리는 상태로, CPU 스케줄러가 실행될 프로세스를 선택한다. 실행 상태 선택된 프..

    프로세스와 스레드

    프로세스 운영체제로부터 시스템 자원을 할당받는 작업의 단위로, 실행을 위해 메모리로 올라온 프로그램 프로세스는 각각의 독립된 메모리 영역을 할당받고, 별도의 주소 공간에서 실행된다. 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근할 수 없으며, 다른 프로세스의 자원에 접근하려면 프로세스 간 통신을 이용해야 한다. 메모리 구조 코드 영역 - 프로그램의 코드가 저장되는 곳으로, 텍스트 영역이라고도 한다. - 프로그래머가 작성한 프로그램은 코드 영역에 탑재되며, 읽기 전용으로 처리된다. 데이터 영역 - 코드가 실행하면서 사용하는 변수나 파일 등 각종 데이터를 저장한다. - 데이터는 변하는 값이기 때문에 기본적으로 읽기와 쓰기 모두 가능하다. 스택 영역 - 함수의 호출과 함께 할당되며, 함수의 호출이 완료..

    병렬 처리

    병렬 처리 병렬 처리는 동시에 여러 개의 명령을 처리하여 작업의 능률을 올리는 방법으로, CPU의 핵심 기능을 가진 코어를 여러 개 만들거나 동시에 실행 가능한 명령의 개수를 늘리는 방식을 이용한다. 병렬 처리에서 작업을 N개로 쪼갰을 때 N을 병렬 처리의 깊이라고 한다. 예를 들어 병렬 처리의 깊이가 4인 경우는 작업을 네 단계로 나눈 것으로 동시에 처리할 수 있는 작업의 개수가 최대 4개이다. 따라서 병렬 처리의 깊이 N은 동시에 처리할 수 있는 작업의 개수를 의미한다. 이론적으로는 N이 커질수록 동시에 작업할 수 있는 작업의 개수가 많아져서 성능이 높아지지만, 작업을 너무 많이 나누면 각 단계마다 작업을 이동하고 새로운 작업을 불러오는데 시간이 너무 많이 걸려서 오히려 성능이 떨어진다. 이러한 오버..

    컴퓨터 성능 향상 기술

    현대 컴퓨터 구조 현대 컴퓨터 구조에서 메인보드 내 메모리와 주변장치는 시스템 버스로 연결되어 있고, CPU 내 레지스터, 연산장치, 제어장치는 CPU 내부 버스로 연결되어 있다. 즉, 메모리의 속도는 시스템 버스의 속도와 같고, CPU의 속도는 CPU 내부 버스의 속도와 같다. 따라서 CPU 내부 버스의 속도가 시스템 버스의 속도보다 빠르기 때문에, 메모리를 비롯한 주변장치의 속도가 CPU의 속도를 따라가지 못하는 문제가 발생한다. 버퍼와 스풀러 버퍼는 속도에 차이가 있는 두 장치 사이에서 그 차이를 완화하는 역할을 하는 장치로, 일정량의 데이터를 모아 롬김으로써 속도의 차이를 완화한다. 스풀은 CPU와 입출력장치가 독립적으로 동작하도록 고안된 소프트웨어적인 버퍼로, 대표적인 예로 프린터에 사용되는 스..

    컴퓨터 구조

    하드웨어 구성 컴퓨터는 중앙처리장치, 메인메모리, 입력장치, 출력장치, 저장장치로 구성된다. 컴퓨터로 하는 작업은 대부분 중앙처리장치와 메인메모리의 협업으로 이루어지기 때문에, 중앙처리장치와 메인메모리는 필수 장치로 분류되고, 그 외의 부품은 주변장치라고 한다. 메인메모리는 전력이 끊기면 데이터를 잃어버리기 때문에 데이터를 영구 보관하려면 하드디스크나 USB를 사용해야 하며 메인메모리를 주기억장치, 하드디스크나 USB 같은 메모리를 보조저장장치라고 부른다. CPU CPU는 명령어를 해석하여 실행하는 장치로 산술논리 연산장치, 제어장치, 레지스터로 구성된다. 산술논리 연산장치 데이터를 연산하는 곳으로 데이터의 덧셈, 뺄셈, 곱셈, 나눗셈 같은 산술 연산과 AND, OR 같은 논리 연산을 수행한다. 제어장치..

    운영체제 개요

    운영체제란? 운영체제는 사용자에게 편리한 인터페이스 환경을 제공하고, 컴퓨터 시스템의 자원을 효율적으로 관리하는 소프트웨어를 말한다. 즉, 운영체제는 각각의 응용 프로그램이 활동할 수 있는 환경을 제공하고, 응용 프로그램이 필요로 하는 컴퓨터 자원을 나누어주며, 응용 프로그램으로부터 컴퓨터 자원을 보호하는 역할을 한다. 운영체제는 응용 프로그램이나 사용자에게 컴퓨터 자원을 사용할 수 있는 인터페이스를 제공하는데, 이를 통해 응용 프로그램이나 사용자에게 모든 컴퓨터 자원을 숨기고 정해진 방법으로만 컴퓨터 자원을 사용하도록 제한한다. 인터페이스 하드웨어 인터페이스 운영체제는 CPU, 메모리, 키보드, 마우스와 같은 다양한 하드웨어를 일관된 방법으로 사용할 수 있도록 해주는 하드웨어 인터페이스를 제공한다. 하..

    MTV 패턴과 적용

    디자인 패턴 만약 하나의 스크립트에 서버에서 처리해야하는 로직과 프론트로 전달되어야 하는 HTML 코드를 함께 작성하게 되면, 프론트만 수정해야 할 때도 로직이 들어있는 스크립트를 열어보아야 하고 잘못하면 로직 코드에 문제가 발생하게 된다. 따라서 이러한 문제들을 해결하기 위해 화면 출력을 위한 HTML 코드를 별도의 파일로 분리하고, 서버쪽 코드는 다시 DB 구조를 위한 파일과 기능을 위한 파일을 분리하는 디자인 패턴을 사용하기 시작했다. 웹 프로그래밍에서 자주 사용되는 디자인 패턴은 MVC로, Model View Controller의 약자이다. MTV 패턴 MTV는 Model Template View의 약자로 각각의 기능은 아래와 같다. Model DB의 구조를 결정하며, 테이블의 이름과 각 칼럼의 ..

    장고 개발 환경 세팅

    Django 장고는 파이썬으로 프로그래밍하기 위한 웹 프레임워크로, 웹 서비스를 만들 때 필요한 대부분의 기능을 미리 정형화된 형태로 준비해두어 생산성이 좋다. 특징 기본적으로 회원 관리 기능과 관리자 페이지를 제공한다. 데이터베이스와의 통신을 위한 다양한 드라이버를 지원하고, ORM 방식을 통해 데이터베이스를 다룰 수 있다. CRUD 기능을 제네릭 뷰라는 형태로 미리 만들어놓았기 때문에, 뷰를 상속받기만 하면 바로 기능을 구현할 수 있다. 다양한 기본 미들웨어를 사용해 웹 애플리케이션 보안성이 높다. 설정파일을 개발 환경과 배포 환경을 구분해서 사용할 수 있기 때문에, 클라우드 서비스에서 자동 배포를 활용할 수 있다. 가상 환경 가상 환경은 다양한 파이썬 버전과 모듈 버전을 사용할 때, 각각의 버전 별..

    21940 가운데에서 만나기

    문제 https://www.acmicpc.net/problem/21940 21940번: 가운데에서 만나기 위 조건을 만족하는 도시 $X$의 번호를 출력한다. 만약 가능한 도시 $X$가 여러 개인 경우는 도시의 번호를 오름차순으로 출력한다. www.acmicpc.net 접근 모든 도시 간의 거리가 필요하므로 플로이드-워셜을 이용했다. 플로이드-워셜로 모든 도시 간의 거리를 구한 후, 각 도시에 대해 왕복시간의 최댓값을 계산했다. 풀이 주의할 점은 도시 a에서 도시 b로 가는 경로가 여러번 입력될 수 있으므로, 입력받을 때 경로의 최솟값으로 갱신해주어야 한다. n, m = map(int, input().split()) dist = [[1e9] * (n + 1) for _ in range(n + 1)] for..