profile
기록은 기억을 남긴다.

비밀번호

웹 애플리케이션을 공부하거나 개발하다보면 로그인 기능은 거의 필수적이다. 로그인을 위해서는 비밀번호가 필요한데, 비밀번호가 어떻게 관리되고 있는지에 대한 궁금증이 생겼다. 따라서 비밀번호가 사용되고 있는 환경을 클라이언트(브라우저), 네트워크(패킷), 서버(데이터베이스

2020년 7월 4일
·
0개의 댓글

[Database] Key

키는 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 튜플들을 서로 구분할 수 있는 기준이 되는 속성(attribute)을 말한다.

2020년 4월 28일
·
1개의 댓글

Java 언어 사용하기

이 문서는 Java8 부터 사용할 수 있는 Collection에 대해 설명할 것입니다.

2020년 4월 14일
·
0개의 댓글

Call By Value VS Call By Reference

C/C++, Java와 같은 언어를 학습하다보면 Call By Value, Call By Reference와 같은 말을 볼 수 있습니다. 이는 함수(메서드)를 호출할 때 매개변수를 어떤 형태로 넘겨줄지에 따라 달라집니다.

2020년 3월 4일
·
0개의 댓글

MySQL 테이블 조인(JOIN)

MySQL에서 조인을 처리하는 방법은 네스트드-루프(Nested-loop)로 다른 DBMS보다 단순하다. 그리고 조인되는 각 테이블 간의 레코드를 어떻게 연결할지에 따라 여러 가지 종류의 조인으로 나뉜다.Nested-loop: 일반적으로 두 개의 FOR나 WHILE과

2020년 3월 2일
·
0개의 댓글

Sync VS Async, Blocking VS Non-Blocking

1. Sync VS Async 먼저 Synchronous와 Asynchronous의 어원을 보자. Synchronous의 Syn는 together이란 뜻이고, chrono는 time이다. 따라서 Synchronous는 함께 시간을 맞춘다라는 뜻으로 해석된다. 반면에 A

2020년 2월 8일
·
0개의 댓글

[운영체제(OS)] 19. 디스크 스케줄 알고리즘

1. 디스크 스케줄링 보조기억장치는 현재 여러 가지 존재하지만 아직까지는 하드 디스크가 주로 사용된다. OS19-1 하드 디스크의 구조는 앞서 살펴봤듯이 위 그림과 같다. 디스크에 접근하는 시간은 Seek time(탐색 시간) + rotational delay + transfer time 으로 계산할 수 있는데, 이 중에서 seek time(head를 ...

2020년 2월 5일
·
1개의 댓글

[운영체제(OS)] 18. 파일 할당

컴퓨터 시스템 자원 중 가장 중요한 것은 CPU이다. CPU 자원 관리에 대해서는 맨 처음 부분에서 다루었으며 CPU 스케줄링, 프로세스 동기화 등에 대해서 배웠다. CPU 다음으로 중요한 자원은 메인 메모리와 같은 주기억장치이다. 메인 메모리 관리에 대한 주요 이슈는 페이징, 가상 메모리(요구 페이징) 등이 있었다. CPU, 주기억장치 다음 중요한 컴퓨...

2020년 2월 5일
·
0개의 댓글

[운영체제(OS)] 17. 프레임 할당

1. Global VS Local Replacement Global Replacement: 메모리 상의 모든 프로세스 페이지에 대한 교체 작업을 수행한다. Local Replacement: 메모리 상의 자기 자신의 프로세스 페이지에 대해서만 교체 작업을 수행한다. 메모리 사용 효율은 일반적으로 Global Replacement가 좋다. 2. 프레임 할당...

2020년 2월 5일
·
0개의 댓글

[운영체제(OS)] 16. 페이지 교체 알고리즘

페이지 교체 알고리즘을 살펴보기 전에 Page reference string 이라는 용어를 알아야 한다. CPU가 내는 주소는 이진수 단위이지만, 페이지 교체 알고리즘을 계산하기 위해서는 이진수 주소 단위가 아닌 페이지 단위로 계산해야한다. 예를 들어, CPU가 내는 주소를 간단히 십진수로 표현하여 {100, 101, 102, 432, 612, 103, ...

2020년 2월 5일
·
0개의 댓글

[운영체제(OS)] 15. 가상메모리

가상 메모리는 물리 메모리 크기의 한계를 극복하기 위해 나온 기술이다. 즉, 물리 메모리보다 큰 프로세스를 수행하기 위해 가상 메모리를 사용한다. 예를 들어, 100MB 메모리 크기에서 200MB 크기의 프로세스를 수행할 수 있도록 하는 것이다. 이러한 방식이 어떻게 가능할까? 앞서 메모리 낭비 방지의 동적 할당에서도 봤듯이, 필요한 부분만 메모리에 적재...

2020년 2월 5일
·
0개의 댓글

[운영체제(OS)] 14. 세그멘테이션

지금까지 살펴본 페이징은 프로세스를 물리적으로 일정한 크기로 나눠서 메모리에 할당하였다. 반면에 세그먼테이션은 프로세스를 논리적 내용을 기반으로 나눠서 메모리에 배치하는 것을 말한다. 세그먼테이션은 프로세스를 세그먼트(segment)의 집합으로 만들고, 각 세그먼트의 크기는 일반적으로 같지 않다. 프로세스를 code + data + stack 으로 나누는...

2020년 2월 4일
·
0개의 댓글

[운영체제(OS)] 13. 페이징

1. 페이징(Paging) 외부 단편화로 인한 메모리 낭비는 매우 심하다는 것을 살펴보았다. Compaction을 사용하면 외부 단편화는 해결할 수 있지만, 그로 인해 발생하는 오버헤드와 비효율적인 성능으로 사용하기는 어렵다. 그 이후에 연구를 통해 나온 것이 페이징이다. 페이징은 hole을 가지고 해결하려 한 것이 아니라 프로세스를 작은 크기로 나눠서 외...

2020년 2월 4일
·
0개의 댓글

[운영체제(OS)] 12. 주기억장치관리

메모리는 CPU 자원만큼 컴퓨터를 사용하는데 매우 중요한 자원 중 하나이다. 이전에는 운영체제에서 CPU 자원을 관리하는 프로세스 관리에 대해 살펴보았고, 지금부터는 메인 메모리를 관리하는 기능에 대해 살펴볼 것이다. 특히, 과거에는 메모리가 매우 비싼 자원이었고 크기 또한 작았기 때문에, 운영체제에서 메모리에 대한 관리가 지금보다 더 중요하였다. 현재에...

2020년 2월 4일
·
0개의 댓글

[운영체제(OS)] 11. 모니터

세마포는 실제로 매우 오래된 동기화 도구이다. 현재에는 모니터(monitor)라는 동기화 도구를 주로 사용하며, 이는 좀 더 고수준의 동기화 기능을 제공한다. 1. 모니터 구조 OS11-1 위는 모니터의 구조를 간단히 나타낸 그림이다. 모니터는 공유 자원 + 공유 자원 접근함수로 이루어져 있고, 2개의 큐를 가지고 있다. 각각 mutual exclus...

2020년 2월 3일
·
0개의 댓글

[운영체제(OS)] 10. 프로세스 동기화 3

1. Deadlock(교착상태) 프로세스는 실행을 위해 CPU, 메모리, 파일 등 여러 하드웨어 자원이 필요하다. 이를 운영체제에서 프로세스가 요구하는 자원을 적절히 분배해준다. 예를 들어, 한 프로세스가 A 자원을 가지고 있는 상태에서 B 자원을 요구하고 있다. 하지만 B 자원은 다른 프로세스 역시 요구하고 있는 자원인데, 이러한 상황에서 자원을 분배하는...

2020년 2월 3일
·
0개의 댓글

[운영체제(OS)] 9. 프로세스 동기화 2

1. 전통적 동기화 예제(Classical Synchronization Problems) 1.1 Producer-Consumer Problem 생산자-소비자 문제는 생산자가 데이터를 생산하면 소비자는 그 데이터를 소비하는 형태의 문제이다. 컴퓨터 환경에서 예를 보면, 컴파일러 -> 어셈블러, 웹 서버 -> 웹 클라이언트 등이 있다. 컴파일러에서 생성한 어셈...

2020년 2월 3일
·
0개의 댓글

[운영체제(OS)] 8. 프로세스 동기화 1

현대 컴퓨터의 메모리에는 여러 프로세스가 존재하는데, 이러한 프로세스들이 하나의 공유 메모리나 또 다른 프로세스에 접근할 때는 매우 신중해야 한다. 이처럼 한 프로세스가 다른 프로세스에게 영향을 받거나 주는 프로세스를 Cooperating process라고 한다. 반대로 아무런 영향을 미치지 않는 독립적인 프로세스는 Independent process이다...

2020년 2월 3일
·
0개의 댓글

[운영체제(OS)] 7. 쓰레드(Thread)

1. 프로세스와 생성과 종료 프로세스는 프로세스에 의해 만들어진다. 컴퓨터가 부팅이 되면 운영체제가 메모리에 올라오는데 운영체제가 처음으로 수행하는 일 중에 하나는 최초의 프로세스를 생성하는 것이다. 이렇게 처음 만들어진 프로세스가 다른 프로세스를 만들고 그 프로세스가

2020년 2월 3일
·
0개의 댓글

[운영체제(OS)] 6. CPU 스케줄링

CPU가 하나의 프로세스 작업이 끝나면 다음 프로세스 작업을 수행해야 한다. 이때 다음 프로세스가 어느 프로세스인지를 선택하는 알고리즘을 CPU Scheduling 알고리즘이라고 한다. 간단히 생각해보면 먼저 온 프로세스가 먼저 실행되는 것이 가장 좋을 것이라 생각할 수 있다. 하지만 여러 상황에서 사용되는 컴퓨터 환경에서 꼭 이러한 방법이 좋다고 할 수 ...

2020년 1월 31일
·
0개의 댓글