목록Computer Science (28)
Kim Jinung

1. JDBC(Java Database Connectivity) JDBC는 자바 애플리케이션에서 데이터베이스에 액세스 하는 방법을 명세하는 인터페이스다. 데이터베이스 제품군은 연결 방법이 제각각이다. 따라서 각 데이터베이스에 연결하기 위해서 개발자는 각각의 데이터베이스에 모두 대응해야 한다. 자바 진영에서는 해당 문제를 의존성을 역전 시키는 방법으로 해결했다. 애플리케이션의 비지니스 로직이 데이터베이스 제품군에 의존하는 게 아니라 인터페이스에 의존하도록 했다. 해당 인터페이스가 바로 JDBC다. 자바는 Java Standard Edition에 JDBC 인터페이스를 제공하고, 각 데이터베이스 개발사는 해당 인터페이스를 구현한 DB Driver를 배포한다. 따라서 개발자는 DB 제품군이 변경되더라도 코드를 ..
https://en.wikipedia.org/wiki/Front_controller Front controller - Wikipedia From Wikipedia, the free encyclopedia The front controller software design pattern is listed in several pattern catalogs and is related to the design of web applications. It is "a controller that handles all requests for a website,"[1] which is a useful st en.wikipedia.org Front controller 비지니스 요구사항에 따라서 다양한 컨트롤러를 필요로하게 ..
네트워크 구조 LAN(Local Area Network): 근거리 통신망으로 거점 내 네트워크에 해당한다. 보통 레이어2, 3 스위치 영역 내에 해당한다. WAN(Wide Area Network): LAN 간 통신하기 위한 네트워크에 해당한다. 일반적으로 WAN하면 사설 네트워크에 해당하고, 인터넷은 공용 광역 네트워크를 의미하는 경우에 해당한다. 통신구조 OSI 7Layer 학부때 배운 네트워크 레이어다. 실제로 일을 하면서는 TCP/IP 프로토콜 스택만 사용해왔다. Application Presentation Session Transport Network Data link Physical TCP/IP 프로토콜 스택 최근에는 대부분 TCP/IP 프로토콜 스택을 사용한다. Application: HTTP..
평소에 사용하고 있는 파일과 디렉터리라는 개념을 어떻게 정의하고 있는가? 운영체제가 디스크에 파일을 저장하는 방법 그리고 저장한 파일에 접근하는 방법에 관하여 Basic Concept File: 연관된 정보의 집합으로 운영체제에 의해 구현되는 추상적인 자료형이다. 운영체제는 파일에 대한 system call을 제공하게 된다. File System: 운영체제 내에서 유저가 사용하는 파일을 관리하는 시스템. 운영체제가 이를 제공한다. Directory: 파일들을 그룹핑하고 이러한 그룹들을 계층화 해주는 개념 Device Driver: 운영체제와 I/O 장치 사이에는 드라이버가 존재한다. (운영체제가 모든 하드웨어에 대한 정보를 가지고 있을 수 없으니까, 각 제조사에서 이를 소프트웨어 형태로 제공하는 것임) ..
운영체제와 I/O 장치들이 커뮤니케이션 하는 방법의 종류 그리고 운영체제가 I/O 장치를 위해 제공하는 서비스는 무엇이 있는가? I/O Mechanism Processor Access: 입출력 장치와 CPU가 직접 통신, 주기적으로 CPU가 입출력 장치의 상태를 확인하는 pooling 기법과 DMA를 거치지 않는 기본 인터럽트가 그 예시 Direct Memory Access(DMA): DMA 제어기를 중간에 끼고 통신 ex) CPU - DMA 제어기 - I/O 장치 운영체제의 I/O Service Buffering 두 장치간의 속도 차이를 조절하기 위한 기법이다. Buffer(메모리 영역)라는 임시 저장소를 만들어서 더 느린 장치에 속도를 맞춘다. ex) 초당 네트웍 속도가 10MB이고 데이터 저장 속도..
저장장치를 어떠한 관점으로 접근할 것인가? 유저가 작성한 프로그램은 저장장치에 저장된다. 그리고 이를 실행하기 위해서는 메모리에 적재 해야 한다. 이 상태를 프로세스라고 부른다. 앞서 운영체제가 CPU 사용을 극대화하기 위한 기법들로 프로세스 스케줄링, CPU 스케줄링 그리고 메모리 페이징 기법 등에 관해 정리했다. 그렇다면 실질적으로 프로그램의 저장을 담당하는 저장장치는 어떠한 구조로 구성되어 있을까? 실제로 사용하는 저장장치의 개략적인 구조 그리고 이를 이용한 운영체제 부팅 과정은 어떻게 연결될까? 더 나아가서 저장 장치이므로 다음과 같은 생각을 해볼 수 있다. 어떻게 하면 저장해둔 데이터를 빠르게 탐색할 것인가? 데이터를 어떻게 하면 안정적으로 저장할 것인가? HDD(Hard Disk Drive) ..

메모리 관리에 관하여 현대 컴퓨터 시스템에서 프로그램을 실행 하려면 메인 메모리에 적재해야 한다. 운영체제는 CPU 자원의 사용을 극대화 하고 프로세스를 다중으로 실행하기 위해 CPU 스케줄링 기법 등이 발전해왔다. 프로세스 스케줄링, CPU 스케줄링 그리고 멀티 스레드와 같은 기법들이 그 예이다. 그렇다면 실질적으로 CPU가 실행할 명령어나 데이터를 가져오는 메모리는 프로세스를 어떻게 처리하도록 발전했을지 고민해보면 좋을 것 같다. 논리 주소와 물리 주소 프로그램 컴파일 타임과 로드 타임 시에는 논리 주소와 물리 주소가 같다. 그런데 런타임 바인딩 기법에서는 논리 주소와 물리 주소가 다르다. 따라서 프로그램 실행 중 논리 주소를 물리 주소로 변경해주는 하드웨어가 존재한다. 이것이 MMU(Memory M..
프로세스 동기화? 운영체제는 프로세스를 병행, 병렬로 실행하는 방향으로 발전했다. CPU 사용률을 최대화하기 위함이다. 하지만 이로 인해서 프로세스 간에 공유하고 있는 데이터의 조작 결과가 실행 순서에 의존하게 되는 문제가 발생한다. 이것이 경쟁 조건(Race condtion)이다. 다음으로 임계 구역(Critical section)은 공유 데이터가 조작될 수 있는, 즉 경쟁 조건이 발생할 수 있는 코드 영역이다. 그리고 이러한 임계 구역에서 발생하는 경쟁 조건 문제를 임계구역 문제(Critical section problem)으로 부른다. 프로세스 동기화를 위한 하드웨어 지원 Memory Barries: 프로세서가 메모리 변경 결과를 다른 프로세서에 알린다. 하드웨어 명령어 *하드웨어 레벨에서의 제어는..
CPU 스케줄링이 무엇인가? 운영체제는 프로세스 간 CPU 교환을 통해 그 사용률을 극대화한다. 앞서 다룬 병행성을 갖게 해준 멀티 프로그래밍을 떠올리면 된다. 다시 말해 운영체제의 CPU 스케줄링은 준비 큐에서 대기 프로세스를 선택하고 CPU를 할당하는 작업이다. 스케줄링 방법에 따라 프로세스를 처리하는 성능이 좌지우지 되므로 CPU 스케줄링은 운영체제 설계의 핵심이다. 선점 및 비선점 스케줄링 선점 스케줄링: CPU를 프로세스로부터 가져올 수 있는 케이스 비선점 스케줄링: 프로세스가 자발적으로 CPU를 반납하는 케이스 대부분 현대 운영체제에서는 선점 스케줄링을 사용한다. 비선점 스케줄링은 실시간 스케줄링에 적합하지 않다. CPU 제어 권한을 프로세스가 포기하기 전까지 소유하므로 균형있게 CPU소유 시..
스레드란 무엇인가? 프로세스와 스레드? 운영체제가 제공하는 프로세스 모델에서 프로세스는 스레드라는 단위로 작업을 수행한다. (이것은 CPU의 작업 단위이기도 하다.) 초기 컴퓨터 시스템은 싱글 스레드 프로세스만 존재했다. (스레드가 멀티로 구성된다고 해도 결국 병행 실행이라 의미가 없었다.) 폰 노이만 아키텍처에서 프로그램은 메모리에 적재되고 이를 CPU가 연산한다. 그러므로 싱글 코어 CPU 칩에서는 한 번에 하나의 스레드밖에 실행할 수 없다.(하나의 프로세스가 모든 CPU 리소스를 점유하게 되므로) 운영체제에서는 이를 극복하기 위해서 여러 프로세스를 번갈아가며 작업하는 멀티 프로그래밍 기법이 등장했다. 이것이 병행성이다(Parallel). 시간이 흘러 멀티 코어 CPU가 등장했다. 이는 CPU 연산이..