전체 글

초보 개발자의 지식 공유의 장
프로세스 동기화여러 프로세스의 접근이 가능한 공유된 데이터에 여러 프로세스들이 동시에 접근했을 때를 방지하는 방법 임계구역/상호배제/세마포어임계구역(Critical Section)다중 프로그래밍 운영체제에서 여러 개의 프로세스가 공유하는 데이터 및 자원에 대하여 어느 한 시점에서는 하나의 프로세스만 자원 또는 데이터를 사용하도록 지정된 공유 자원(영역)을 의미임계구역은 특정 프로세스가 독점할 수 없다. 상호 배제(Mutual Exclusion)특정 프로세스가 공유 자원을 사용하고 있을 경우 다른 프로세스가 해당 공유 자원을 사용하지 못하게 제어하는 기법이다.여러 프소세스가 동시에 공유자원을 사용하려 할 때 각 프로세스가 번걸아가며 공유 자원을 사용하도록 하는 것으로 임계 구역을 유지하는 기법상호 배제 구..
CPU 스케줄링 알고리즘문맥교환(Context Switching) : 새로운 프로세스에게 CPU를 할당하기 위해 현재 CPU가 할당된 프로세스의 상태 정보를 저장하고, 새로운 프로세스의 상태 정보를 설정한 후 CPU를 할당하여 실행되도록 하는 작업. (Overhead가 발생하는 주요 원인) CPU 스케줄링이란?메모리에 있는 준비(Ready) 상태의 프로세스 중 하나를 선택해 CPU자원을 할당하는 것 CPU 스케줄링이 일어나는 시점실행상태에서 대기상태로 전환될 때 (예, 입출력 요청) - Non preemptive(비선점) 실행상태에서 준비상태로 전환될 때 (예, 인터럽트 발생) - preemptive(선점) 대기상태에서 준비상태로 전환될 때(예, 입출력이 종료될 때) 종료될 때(Terminated) 선점..
앞에서만든 백업테이블에 있는 데이터를 다시 기존테이블에 부어야할 경우, SELECT INSERT 문을 사용하면 쉽게 데이터를 넣을 수 있다.1INSERT INTO 기존테이블 SELECT * FROM 백업테이블cs 원하는 컬럼만 넣고 싶을 때는 아래와같이 하면 된다.12345INSERT INTO 기존테이블(column1, column2, column3 ...)SELECT column1, column2, column3FROM 백업테이블[WHERE ]cs 사용 예)1INSERT INTO STUDENT SELECT * FROM STUDENT_BACKcs
작업을 하다보면 테이블에 있는 데이터를 임시로 백업을 해야하는 경우가 생긴다.신규테이블을 생성하면서 기존테이블에 있는 데이터를 신규테이블로 옮기는 SQL이 존재한다. 1CREATE TABLE 신규테이블 AS SELECT * FROM 기존테이블 [WHERE 조건]cs 사용 예)1CREATE TABLE STUDENT_BACK AS SELECT * FROM STUDENT WHERE NAME LIKE '강%'cs
프로세스일반적으로 프로세서(처리기, CPU)에 의해 처리되는 사용자 프로그램이나, 시스템 프로그램을 의미하며 프로세스는 필요한 각종 자원을 요구한다.=> PCB를 가진 프로그램, 실행중인 프로그렘 PCB(Process Control Block)PCB : 운영체제가 프로세스에 대한 중요한 정보를 저장해 놓는 곳으로 각 프로세스가 생성될 때마다 고유의 PCB가 생성되고, 프로세스가 완료되면 PCB가 제거됨PCB에 저장되어 있는 정보 : 프로세스의 현재 상태, 포인터, 프로세스 고유 식별자, 스케줄링 및 프로세스의 우선순위, CPU 레지스터 정보 등등 스레드(Thread)하나의 프로세스 내에서 병행성을 증대시키기 위한 메커니즘으로 시스템의 여러 자원을 할당받아 실행하는 프로그램 단위(경량 프로세스라고도함)스레..
운영체제 발달 과정 일괄 처리 시스템 -> 다중 프로그래밍, 다중처리, 시분할, 실시간 처리 시스템 -> 다중 모드 -> 분산 처리 시스템 일괄처리 (Batch Processing) 시스템 초기 컴퓨터 시스템으로, 일정량 또는 일정 기간 동안 데이터를 모아서 한꺼번에 처리하는 방식 사용자 측면에서 반환(응답)시간이 늦지만 하나의 작업이 모든 자원을 독점하므로 CPU 유휴시간이 줄어듦 => 급여 계산, 지불계산, 연말 결산 등 업무에 사용 다중 프로그래밍 (Multi-Programming) 시스템 하나의 CPU와 주기억장치를 이용하여 여러 개의 프로그램을 동시에 처리하는 방식 하나의 주기억장치에 2개 이상의 프로그램을 기억시켜 놓고, 하나의 CPU와 대화하면서 동시에 처리 시분할 (Time Sharing)..
알고리즘 분석어떤 응용 프로그램에 어느 클래스가 더 좋을지 결정하는 한 가지 방법은 둘 다 시도해보고 각각 얼마나 걸리는지 알아보는 것인데, 이러한 접근법을 프로파일링(profiling)이라고 하는데 여기에는 몇 가지 문제점이 존재한다. 알고리즘을 비교하려면 사전에 그것을 모두 구현해봐야 한다. 결과는 사용하는 컴퓨터 성능에 의존한다. 결과는 문제 크기나 입력으로 사용하는 데이터에 의존하기도 한다. 알고리즘 분석(analysis of algorithm)을 사용하여 이러한 문제점을 해결할 수 있다. 알고리즘 분석은 그것을 구현하지 않고도 알고리즘을 비교할 수있도록 하는데 몇 가지 가정을 해야만 한다. 알고리즘을 이루는 더하기와 곱하기, 숫자 비교 등의 기본 연산을 식별한다. 그리고 각 알고리즘에 필요한 연..
DBMS와 버퍼 기억장치의 분류 기억 비용 : '데이터를 저장하는데 소모되는 비용' DBMS와 기억장치의 관계 DBMS는 데이터 저장을 목적으로하는 미들웨어이기 때문에 기억장치와 떨어뜨릴 수 없는 관계이다. 하디드스크(HDD) DBMS가 데이터를 저장하는 매체(저장소)는 대부분 HDD이다. 메모리 메모리는 디스크에 비해 기억 비용이 비싸기 때문에, 하드웨어 1대에 탑재할 수 있는 양이 크지 않다. DBMS는 항상 디스크 이외의 장소에도 데이터를 올려 놓는데, 바로 1차 계층의 기억장치 메모리에 올려놓는다. 버퍼를 활용한 속도 향상 DBMS가 일부라도 데이터를 메모리에 올리는 것은 성능 향상 때문이다. 한마디로 SQL 구문의 실행 속도를 빠르게 만들기 위함이다. 따라서 자주 접근하는 데이터를 메모리 위에 ..
DBMS 아키텍처한국에서는 Oracle, Micrisoft SQL Server, DB2, PostgreSQL, MySQL 등 많은 RDB가 존재하고 이러한 제품은 각각의 특징이 있다. 하지만 RDB로써 기능을 제공한다는 목적은 모두 동일하므로, 기본적인 구조 자체는 모두 같다.DBMS 내부에는 어떠한 기능이 있을까 1. 쿼리 평가 엔진사용자로부터 입력받은 SQL 구문을 분석하고, 어떤 순서로 기억장치의 데이터에 접근할지를 결정한다.=> 이때 결정되는 계획을 '실행계획'이라고 함, 데이터에 접근하는 방법을 '접근 메서드(access method)'라고 함한마디로 쿼리 평가 엔진은 계획을 세우고 실행하는 DBMS의 핵심 기능을 담당하는 모듈이다. 2. 버퍼 매니저DBMS는 버퍼라는 특별한 용도로 사용하는 메..
스프링이 개발자에게 제공하는 가장 중요한 가치는 객체지향과 테스트이다. 웹을 통한 DAO 테스트의 문제점DAO뿐만 아니라 서비스 클래스, 컨트롤러, JSP 뷰 등 모든 레이어의 기능을 만들고 나서야 테스트가 가능하다는 점이 가장 큰 문제였다.사실 테스트하고 싶었떤 건 UserDao 였는데 다른 계층의 코드와 컴포넌트, 심지어 서버의 설정 상태까지 모두 테스트에 영향을 줄 수 있기 때문에 이러한 방식으로 테스트하는 것은 번거롭고, 오류가 있을 때 빠르고 정확하게 대응하기가 힘들다는 문제가 있다. 테스트하고자 하는 대상이 명확하다면 그 대상에만 집중해서 테스트하는 것이 바람직하다.(단위 테스트)=> 안하게되면 이유를 찾기위해서 디버거를 돌려가며 스텝별로 확인해야하는 수고를 하게될지도 모른다. 테스트를 위한 ..
깡냉쓰
평범한 개발자 노트