Loading...

[CS] 8. RDBMS, NoSQL

사전 지식 더보기 DB 컴퓨터 시스템에 전자 방식으로 구조화된 정보나 데이터의 집합 DBMS DBMS(DataBase Management System)은 사용자와 DB 사이에서 사용자의 요구에 따라 데이터를 생성하고 DB를 관리해주는 소프트웨어이다. DBMS는 데이터를 계층이나 탐색 형식으로 저장한다. 파일 시스템을 사용해 저장하며 테이블 간에는 아무런 관계가 존재하지 않는다. 데이터에 대한 많은 보안을 제공하지 않으며 정규화를 수행할 수 없어 데이터는 높은 중복성을 가질 수 있다. SQL SQL(Strucured Query Language)는 관계형 DBMS의 데이터 관리를 위해 설계된 프로그래밍 언어. 자료 검색, 관리, DB 스키마 생성, 수정, DB 객체 접근 조정 관리를 위해 고안 RDB 관계형..

[CS] 7. 쿠키와 세션

사전 지식 더보기 HTTP는 기본적으로 비상태성인 프로토콜이다. 비상태성이라는 것은 클라이언트-서버 간의 통신에서 서버가 클라이언트의 상태를 알 수 없다는 것이다.(통신이 끝나면 상태를 유지하지 않는다는 것을 의미한다. 이러한 성질 때문에 쿠키와 세션을 이용하지 않는다면 쇼핑몰에서 페이지를 이동할 때마다 로그인을 해야 할 것이다.) 비상태성인 이유는 HTTP가 비연결지향적이라는 특성을 지니기 때문이다. 비연결지향이라는 것은 요청에 대한 응답을 마치면 서버와 클라이언트의 연결이 끊어진다는 것을 의미한다. 이 성질 때문에 서버는 요청을 받더라도 어느 클라이언트에서 요청을 받았는지 식별하지 못한다. 즉, 통신이 끝나면(요청에 대한 응답을 하게 되면) 서버와 클라이언트의 연결이 끊어지기 때문에 서버가 클라이언트..

[CS] 6. 서버, 클라이언트, WAS, DB 서버

클라이언트 클라이언트는 네트워크를 통해 서버에 데이터 또는 서비스를 요청(Reqeust)하며 서버로부터 응답(Response)을 받는다. 클라이언트는 우리와 같은 사용자가 될 수도 있고 컴퓨터, 스마트폰 같은 기기가 될 수도 있으며, 애플리케이션이나 웹 브라우저가 될 수도 있다. 웹 브라우저 같은 경우는 "웹 클라이언트"라고도 한다. 서버 클라이언트로부터 네트워크를 통해 받은 요청(Reqeust)을 처리 후 정보나 데이터를 응답(Response) 해주는 컴퓨터(Service provider)를 뜻한다. 데이터베이스(DB)에 들러 필요한 정보를 가져다 가공하여 클라이언트에게 가져다 준다. 다수의 클라이언트에게 서비스를 제공하기 때문에 고사양의 하드웨어를 갖춘 컴퓨터여야 한다. 컴퓨터의 사양으로 서버와 클라..

[CS] 4. 라우팅과 라우터

TCP/IP 라우팅 라우팅이란 어떤 네트워크 안에서 통신 데이터를 짜여진 알고리즘에 의해 최대한 빠르게 보낼 수 있는 최적의 경로를 설정하는 과정을 의미한다. 전체 경로를 정의하는 것이 아니라, 패킷을 대상에 전달할 수 있는 한 호스트에서 게이트웨이로(혹은 한 게이트웨이에서 다른 게이트웨이로)의 경로 세그먼트만을 정의한다. 항목 설명 호스트 라우트 다른 네트워크의 특정 호스트에 패킷을 전달할 수 있는 게이트웨이를 정의 네트워크 라우트 특정 네트워크의 호스트에 패킷을 전달할 수 있는 게이트웨이를 정의 디폴트 라우트 특별히 정의되지 않은 경우에 사용할 게이트웨이를 정의 루프백 라우트 로컬 네트워크 주소로 전송된 모든 패킷에 대한 디폴트 라우트 브로드캐스트 라우트 모든 브로드캐스트 패킷에 대한 디폴트 라우트로..

3.스레드 동기화

스레드 동기화 싱글스레드 프로세스의 경우 프로세스 내에서 단 하나의 스레드만 작업하기 때문에 프로세스의 자원을 가지고 작업하는데 별문제가 없지만, 멀티스레드 프로세스의 경우 여러 스레드가 같은 프로세스 내의 자원을 공유해서 작업하기 때문에 서로의 작업에 영향을 주게 된다. 한 스레드가 진행 중인 작업을 다른 스레드가 간섭하지 못하도록 막는 것을 '스레드의 동기화(synchronization)'라고 한다. 스레드를 동기화하는 방법들 방법 설명 임계영역(critical section) 공유 자원에 대해 단 하나의 스레드만 접근하도록 한다. (하나의 프로세스에 속한 스레드만 가능) 뮤텍스 (mutex) 공유 자원에 대해 단 하나의 스레드만 접근하도록 한다. (서로 다른 프로세스에 속한 스레드도 가능) 이벤트 ..

2. 스케줄링

1. CPU 스케줄링 어떤 스레드가 어떠한 우선순위로 CPU를 얼마나 사용할 것인지를 결정하고 수행하는 것을 CPU 스케줄링이라고 한다. CPU 스케줄링의 목표는 시간 당 처리되는 프로세스의 수를 높이고 CPU의 효율을 높여주기 위한 것이다. CPU 스케줄링을 통해 작업 시간과 응답 시간을 줄여 자원들의 유휴상태로 놓이지 않게 해 활용을 최대화하고 특정 프로세스 실행이 무한정으로 기다리지 않게 한다. 2. CPU 스케줄링의 단계 1. 장기: 어느 작업(Job)을 등록하여 시스템 자원을 이용할 수 있게 할 것 인지를 결정한다. 선택된 작업은 프로세스로 수행 2. 중기: 어느 프로세스에게 메모리를 할당할 것인지를 결정한다. 시스템의 상태에 따라서 조정하게 된다. 3. 단기: 준비 상태의 프로세스들 중 어떤 ..