프로세스의 개념 "Process is a program in execution" => 프로세스는 실행중인 프로그램을 의미. 프로세스의 문맥(context) 프로그램이 실행되다 언젠간 종료가 될텐데 문맥이라는 것은 중간 어떤 시점에서 잘라놓고 봤을 때 이 프로그램이 무엇을 어떻게 실행했는지, 현재 시점이 어떤 상태에 있는지를 정확하게 나타내기 위해 사용되는 개념. -> 프로세스가 시작되면 독자적인 주소 공간을 생성한다. 이 프로세스가 CPU를 잡게 되면 PC라는 레지스터가 프로세스 코드의 어느 부분을 가리키고 있고, 매 순간 instruction을 읽어 CPU안의 레지스터에 값을 넣고 ALU(연산 장치)에서 연산 후 그 결과를 레지스터 또는 메모리에 저장한다. 이 과정을 계속해서 진행하다가 이 프로세스가 ..
컴퓨터 시스템 구조 아래에 간단하게 설명 Main Memory CPU의 작업 공간 Device controller 해당 I/O 장치유형을 관리하는 일종의 작은 CPU 각 device의 내부를 통제하는 것은 CPU가 아닌 각 device controller의 역할 제어 정보를 위해 control register, status register을 가짐. local buffer 가짐. I/O는 실제 device와 local buffer 사이에서 일어나고, I/O가 끝났을 경우 device controller는 interrupt로 CPU에 그 사실을 알림. 만약 CPU가 instruction을 수행하다가 프로그램이 disk에서 데이터를 읽어와야 하는 경우엔 CPU가 직접 disk에 접근하는 것이 아니라 disk ..
코딩 테스트 문제를 풀어보며 순열과 조합이 많이 사용되는 것을 느꼈다. 몇 번은 다른 분이 블로그에 작성해놓은 것을 그대로 가져다 사용하며 문제를 해결하는 데에 목적을 두었지만, 이제부터라도 확실하게 이해하기 위해 구현해보며 블로그에 적어두기로 하였다. 자세하게 작성해보자. 순열 Permutation 순열이란 서로 다른 n개의 원소에서 r개를 중복 없이 순서에 상관있게 선택하는 혹은 나열하는 것이라고 한다. 예를 들어, [1, 2, 3]와 같이 3개의 원소를 가진 배열이 있을 때 순서에 상관있게 2개씩 나열하면 다음과 같은 결과가 나올 것이다. [1, 2], [1, 3], [2, 1], [2, 3], [3, 1], [3, 2] 위 결과에서 볼 수 있듯이 결과에는 같은 원소가 반복되지 않는 것을 알 수 있..
운영체제란? -> 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층 운영체제의 역할 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공해준다. 운영체제는 동시 사용자/프로그램들이 각각 독자적 컴퓨터에서 수행되는 것 같은 환상을 제공해준다. 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대신 해준다. 컴퓨터 시스템의 자원(CPU, 메모리, 입출력장치 등)을 효율적으로 관리해준다. -> 주 목적!! 운영체제의 의미 - 좁은 의미: 커널 (운영체제의 핵심 부분으로 메모리에 상주하는 부분) - 넓은 의미: 커널을 포함해서 각종 주변 시스템 유틸리티를 포함한 개념 운영체제의 분류 1. 동시작업 가능 여부 단일 작업 (Single tasking) : 한 번..
문제 설명 카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 컴파일하여 로그를 보니 대부분 소스 코드 내 작성된 괄호가 개수는 맞지만 짝이 맞지 않은 형태로 작성되어 오류가 나는 것을 알게 되었습니다. 수정해야 할 소스 파일이 너무 많아서 고민하던 "콘"은 소스 코드에 작성된 모든 괄호를 뽑아서 올바른 순서대로 배치된 괄호 문자열을 알려주는 프로그램을 다음과 같이 개발하려고 합니다. '(' 와 ')' 로만 이루어진 문자열이 있을 경우, '(' 의 개수와 ')' 의 개수가 같다면 이를 균형잡힌 괄호 문자열이라고 부릅니다. 그리고 여기에 '('와 ')'의 괄호의 짝도 모두 맞을..
- Total
- Today
- Yesterday