본문 바로가기

CS

(7)
[운영체제와 정보기술의 원리] 5. 프로세스 관리 1. 프로세스의 개념프로세스(process)란 실행 중인 프로그램(program in execution)을 뜻한다. 디스크에 실행파일 형태로 존재하던 프로그램이 메모리에 올라가서 실행되기 시작하면 비로소 생명력을 갖는 프로세스가 되며, 프로세스는 CPU를 획득해 자신의 코드를 수행하기도 하며, 때로는 CPU를 반환하고 입출력 작업을 수행하기도 하고, 그러다 임무를 다 수행하고 나면 종료되어 사라지게 된다. 프로세스의 문맥(context)이란 프로세스가 현재 어떤 상태에서 수행되고 있는지 정확히 규명하기 위해 필요한 정보를 의미한다. CPU를 사용하다 빼앗겼다가 다시 CPU를 획득해 명령의 수행을 재개하는 시점이 되면 이전의 CPU 보유 시기에 어느 부분까지 명령을 수행했는지 직전 수행 시점의 정확한 상태..
[운영체제와 정보기술의 원리] 4. 프로그램의 구조와 실행 1. 프로그램의 구조와 인터럽트프로그램이 CPU에서 명령을 수행하려면 해당 명령을 담은 프로그램의 주소 영역이 메모리에 올라가 있어야 한다. 이때, 프로그램의 주소 영역은 크게 코드, 데이터, 스택 영역으로 구분된다. 코드 영역은 우리가 작성한 프로그램 함수들의 코드가 CPU에서 수행할 수 있는 기계어 명령어 형태로 변환되어 저장되는 부분이고, 데이터 영역은 전역 변수 등 프로그램이 사용하는 데이터를 저장하는 부분이다. 스택 영역은 함수가 호출될 때 호출된 함수의 수행을 마치고 복귀할 주소 및 데이터를 임시로 저장하는 데 사용되는 공간이다. 프로그램은 처음 메인함수에서 실행을 시작해 메인함수가 다른 함수를 호출하면, CPU가 다른 함수의 코드로 수행 위치를 이동한다. 그러면 프로그램은 새로운 함수 위치로..
[운영체제와 정보기술의 원리] 3.컴퓨터 시스템의 동작 원리 1. 컴퓨터 시스템의 구조컴퓨터 시스템의 구조는 컴퓨터 내부장치인 CPU, 메모리와 컴퓨터 외부 장치인 디스크, 키보드, 마우스, 모니터, 네트워크 장치등으로 구성된다. 외부장치에서 내부장치로 데이터를 읽어와(입력) 연산을 처리후 그 결과를 외부장치로 내보내는 방식(출력)을 입출력(I/O)이라고 한다. 메모리 및 입출력장치 등의 하드웨어 장치에는 컨트롤러가 있다. 컨트롤러는 일종의 작은 CPU로써 각 하드웨어 장치에서의 제어를 담당한다. 메모리를 제어하는 메모리 컨트롤러, 디스크를 제어하는 디스크 컨트롤러 등이 있다. 운영체제 중 항상 메모리에 올라가 있는 운영체제의 핵심 부분을 커널이라고 한다.2. CPU 연산과 IO 연산입출력 장치들의 I/O 연산은 입출력 컨트롤러가 담당하고, 컴퓨터 내에서 수행되는..
[운영체제와 정보기술의 원리] 2. 운영체제 개요 1. 운영체제의 정의운영체제(operation system)는 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어이다.운영체제 자체도 하나의 소프트웨어로 컴퓨터 전원이 켜짐과 동시에 메모리에 올라간다. 하지만 운영체제와 같은 규모가 큰 프로그램이 모두 메모리에 올라간다면 메모리 공간의 낭비가 심하기 때문에 운영체제의 필요한 부분만 전원이 켜짐과 동시에 메모리에 올리고 그렇지 않은 부분은 필요할 때 메모리에 올린다. 이때, 메모리에 상주하는 운영체제의 부분을 커널(Kernel)이라고 한다.2. 운영체제의 기능컴퓨터 하드웨어와 사용자 사이에 위치한 운영체제의 특성을 빗대어, 그 역할을 두 가지로 나눌 수 있다. 두 가지 주요 기능은 컴퓨터 시스템 내의 자원(resource)을 효율적으로 관리하는..
[자료구조] Array와 ArrayList, 그리고 LinkedList Array (배열)메모리 상에 데이터를 연속하게 배치하는 자료구조이다.배열의 크기는 고정 길이이므로, 추가적으로 늘릴 수 없다.데이터를 연속하게 배치하기 때문에 0부터 시작하는 index 가 존재하며, index 를 활용한 특정 데이터 접근의 시간 복잡도는 O(1) 이다.데이터의 삽입이나 삭제가 중간에서 이뤄지는 경우, 그 뒤의 모든 요소를 한 칸 앞 당기거나, 밀어줘야하므로 시간 복잡도는 O(N) 이다.cache hit rate 가 높다.캐시는 일반적으로 블록 단위로 데이터를 가져오기 때문에, 연속된 메모리 공간에 접근할 때 다음에 사용될 데이터를 미리 가져와 놓을 수 있다.Array vs ArrayList in Java차이는 크기에 있다. 기존의 Array(배열) 은 고정길이로, 한 번 길이를 할당하..
[데이터베이스] 파티셔닝과 샤딩 파티셔닝 vs 샤딩데이터베이스에 데이터가 지속적으로 증가한다고 가정하자. 지속적으로 데이터가 증가한다면 쿼리 최적화나 인덱스 튜닝은 일정 수준에서만 개선이 될 가능성이 높다. 그래서 성능 문제를 위해 근본적인 구조를 개선해야 하는데 이때 샤딩과 파티셔닝 방법이 사용될 수 있다. 두 방법 모두 대규모 데이터 세트를 더 작은 하위 세트로 분할하는 방법이지만 차이점이 있다.파티셔닝파티셔닝은 매우 큰 테이블을 여러 개의 작은 테이블(파티션)로 나누는 작업이다.파티셔닝 이점성능 향상: 쿼리시 전체 테이블이 아닌 특정 파티션만 검색하므로 I/O가 감소한다.부하 분산: 데이터를 물리적으로 분산시켜 디스크, CPU, 메모리 부하를 나눈다.파티셔닝 종류수직 파티셔닝 테이블의 칼럼이 여러 파티션으로 나뉘며 각 파티션에는 ..
HTTP 쿠키에 대해서 HTTP 쿠키란? HTTP 쿠키는 서버가 어떤 데이터를 브라우저 측에 저장한 후 다시 브라우저로부터 그 데이터를 받아오는 기술, 또는 그 데이터 자체를 뜻한다. 브라우저가 원격에 있는 서버와 네트워크를 통해 쿠키를 주고 받으려면 둘 간에 약속이 필요하다. 이 약속이 바로 HTTP 프로토콜 상에 구현되며 쿠키는 HTTP 메시지의 헤더 영역을 통해 송수신되도록 약속되어 있다. 쿠키는 서버 입장에서 클라이언트(브라우저)를 식별해 준다. 이를 이용해 상태가 없는 (stateless) HTTP 프로토콜에서 상태 정보를 기억해서 사용자의 로그인 상태를 유지할 수 있다. 사용자가 별도로 요청하지 않아도 브라우저에서 서버에 요청시 request header에 담긴다. HTTP 쿠키의 매커니즘 HTTP 쿠키는 =..