
DND라는 IT 동아리에서 프로젝트를 기획할때 우리가 중요하게 생각한 한가지는 바로 로그인 없이 사용자가 접근할 수 있게 하는거였다. 로그인이 있다면 귀차니즘이 강한 사용자는 바로 나갈게 뻔하다. 나또한 로그인이 있어야 사용할 수 있는 서비스를 보다보면 그냥 나가기 일쑤였다. 하지만 로그인없이 사용자가 했던 행동들을 다 어떻게 기억할 수 있단 말인가? 우리가 개발하기로 한 프로젝트에서는 로그인은 없지만 사용자가 촬영한 사진, 사용자가 참여하고 있는 모임, 사용자가 모임에서 사용하고 있는 닉네임 등을 알고 있어야 했다. 로그인의 주 역할은 해당 요청을 보낸 사용자가 누구인지 알려주는 역할을 한다. HTTP는 상태를 유지하지 않는 프로토콜이라는 것은 네트워크를 배우다 보면 누구나 접하는 개념이다. 그렇기 때..

프로세스는 운영체제가 메모리 등의 필요한 자원을 할당해준 실행중인 프로그램이다.프로그램을 실행하면 운영체제로부터 실행에 필요한 자원을 할당받아 프로세스가 되는것이다. 프로세스의 문맥(context)특정 시점에 어디까지 수행했는지에 관한것 크게 3가지로 분류한다.1. 하드웨어 문맥CPU 수행 상태를 나타내는 것으로 PC와 각종 레지스터에 저장하고 있는 값들을 말한다.2. 프로세스의 주소공간코드, 데이터, 스택으로 구성된 프로세스만의 독자적인 주소 공간을 말한다.3. 커널상의 문맥프로세스를 관리를 위한 자료구조인 PCB와 Kernel stack을 말한다.커널 스택을 왜 프로세스마다 별도로 두고 있을까?커널은 하나인데 여러 프로세스가 요청해서 커널 코드를 여러 프로세스 요청으로 실행될 수 있다.커널 스택을 프..

Process란? 프로세스란 실행중에 있는 프로그램을 의미한다. 프로세스는 운영체제에 의해 관리되며, 독립적으로 실행되고 자원을 할당 받을 수 있는 단위이다. 운영체제는 프로세스들에게 적절히 자원들을 할당하여 여러가지 작업을 수행할 수 있게 한다. 특징 프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당받는다. Thread 프로세스의 한계 프로세스만 존재하면 어떤일이 발생할까? 프로세스만 존재한다는 말은 다른 말로 한다면 한번에 하나의 작업을 할 수 있다는 뜻이다. 같은 프로세스를 여러개 만들수도 있겠지만 프로세스는 앞에서 말했다 싶이 독립적으로 실행되고 자원을 할당 받을 수 있는 단위이다. 즉 같은 프로세스라도 서로 공유하는 부분없이 독립적으로 자원을 ..

동기식 I/O어떤 프로그램이 I/O 요청 후 입출력 작업이 완료된 후에야 CPU 제어권이 사용자 프로그램으로 넘어가는 것을 말한다. 즉, 입출력 요청 후 입출력 작업이 완료되기 전에는 CPU 제어권이 없다는 뜻이된다. 이말은 실행이 안된다는 것이다. 동기식 I/O의 구현 방식은 두가지로 나뉜다.구현 방법 1I/O가 끝날 때까지 CPU를 낭비시킴 매시점 하나의 I/O만 일어날 수 있음 구현 방법2 보통 이방법 사용I/O가 완료될 때까지 해당 프로그램에게서 CPU를 빼앗음I/O 처리를 기다리는 줄에 그 프로그램을 줄 세움 다른 프로그램에게 CPU를 줌 보통은 구현 방법2를 사용하는게 일반적이다. 비동기식 I/O어떤 프로그램이 I/O 요청을 한 후 입출력 작업이 끝나기를 기다리지 않고 CPU 제어권이 사용자..

커널(Kernel)이란 운영체제의 가장 핵심 기능은 자원의 관리, 즉 프로세스 관리, 메모리 관리, 파일 시스템 관리, 입출력 장치 관리 등이라고 배웠다. 그 외에도 다른 컴퓨터와의 통신을 위한 네트워킹, 외부 침입으로부터 컴퓨터 시스템을 지키게 하는 보호 기능 등도 중요한 핵심 기능이다. 이와 같은 핵심 기능들을 우리는 운영체제 커널 kernel 이라고 부른다. 커널의 영어 사전적 의미는 요점, 핵심이다. 운영체제 커널을 다른 말로는 뉴클리우스 nucleus 라고도 부른다.쉘커널 외에도 운영체제에서 중요한 역할을 하는 것은 쉘 shell 이다. 쉘의 영어 사전적 의미는 껍질 또는 외피이다.어떤 프로그램을 실행하려면 해당 아이콘을 더블 클릭하면 되고, 파일을 삭제하려면 그 파일을 드래그 하여 휴지통에 넣..

1. programmed I/Oprogrammed I/O란무엇일까? 대단한말 같지만 말 그대로다 프로그래밍된 I/O라는 말이다. CPU가 I/O 장치에 일을 시킬때 해당 장치의 Device Controller에게 일을 시킨다. 이때 CPU가 Device Controller에 존재하는 register 값을 읽고 씀으로써 I/O가 이루어진다. 예시는 다음과 같다.1) CPU는 상태 레지스터를 주기적으로 읽어보며 하드 디스크의 준비 여부를 확인 2) 하드 디스크가 준비되었다면 CPU는 백업할 메모리의 정보를 데이터 레지스터에 쓰기programmed I/O에서는 Device Controller의 작업 상태를 확인하기위해 주기적으로 register값을 확인한다. 이렇게 주기적으로 확인하는 방식을 다른말로 폴링이라..

1 일괄처리컴퓨터에서 프로그램을 작성하여 실행하는 과정을 알아보자. 지금은 프로그래머가 직접 컴퓨터 앞에 앉아 모니터 화면을 보면서 키보드 입력을 통해 소스 코드를 작성한다. 이클립스 eclipse 등 통합개발환경을 사용하기 때문에 프로그램 작성도 수월하고 디버깅 지원도 받을 수 있으며 작성된 프로그램을 즉시 실행해 볼 수도 있다. 실행 결과는 모니터 화면에서 바로 볼 수 있다.그러나 옛날에는 그렇게 할 수 없었다. 키보드도 모니터도 없었기 때문이다.과정프로그래머는 코딩 시트 coding sheet 라는 종이에 연필로 소스 코드를 적고, 그것을 전산소에 제출한다.제출하면 전산소에서는 이 코드 내용을 천공카드 punched card 로 옮긴다.천공카드는 종이로 된 카드인데, 카드의 특정 위치에 구멍을 뚫음..

1.1 운영체제운영체제는 영어로 Operating System 이며 O/S 또는 OS 라는 약칭으로 표기한다.운영체제는 하드 디스크 등 보조기억장치 내에 저장되어있는 컴퓨터 프로그램의 일종이다.운영체제는 계속 메모리에 상주한다. 즉 지워지지 않는다. 운영체제 프로그램이 메모리에서 사라지는 유일한 경우는컴퓨터를 끌 때 뿐 이다. 메모리 상주는 운영체제 프로그램이 다른 프로그램과 구분되는 중요한 특징 중 하나다.1.2 운영체제의 목적컴퓨터 사용 편의운영체제가 하는 일은 사용자에게 컴퓨터 사용의 편의성을 제공해주는 것이다. 이것이 운영체제의 첫 번째 목적이다. 운영체제는 사용자가 디스크, 메모리, 프린터 등 컴퓨터 하드웨어에 대해 잘 알지 못해도 어려움 없이 컴퓨터를 사용할 수 있게 해준다.성능 향상컴퓨터 세..