[Computer Science] [시스템 프로그래밍] 파일 다루기
·
Computer Science/System Programming
시스템 프로그래밍운영체제, 하드웨어와의 상호작용을 프로그래밍 하는 것커널이 제공하는 기능을 직접 제공받으며 low-level에서 동작하는 프로그램을 작성하는 것커널이 제공하는 기능: 시스템 콜 주로 활용운영체제, 네트워크 파트에서 학습한 내용을 소스코드 레벨에서 관측해보자.타 프로그래밍 언어를 이용하더라도 공통적으로 사용될 시스템 프로그래밍 개념파일 입출력프로세스간 통신소켓 프로그래밍파일 디스크립터프로세스는 운영체제로부터 파일을 할당받는다. 이걸 어떻게 구분할 수 있을까?파일을 식별하기 위해 운영체제로부터 할당 받은 정보입출력장치, 파이프, 소켓도 파일 디스크립터로 식별마치 위에 장치들을 파일로 다룬다.일반적으로 0이상의 정수 형태프로세스가 파일을 열거나 생성할 때 운영체제는 해당 파일에 대한 파일 디스..
[Computer Science] [정보처리기사] 소프트웨어 설계 & 계산 문제 해설
·
Computer Science/기타
정보처리기사 필기를 준비하며 간단하게 정리를 해봤다.소프트웨어 설계소프트웨어 생명 주기소프트웨어 생명 주기는 소프트웨어 개발 단계와 각 단계별 주요 활동, 활동의 결과에 대한 산춘물로 표현한다. 소프트웨어 수명 주기라고도 한다.소프트웨어 공학의 개념소프트웨어 공학은 소프트웨어의 위기를 극복하기 위한 방안으로 연구된 학문여러가지 방법론과 도구, 관리 기법들을 통하여 품질 및 생산성 향상을 목적폭포수 모형(Waterfall Model)폭포처럼 떨어진 물은 거슬러 올러갈수없다.각 단계에서 확실히 매듭짓고 그 결과를 철저하게 검토하는 승인 과정을 거친다.전통적인 소프트웨어 생명주기모형, 고전적 생명 주기 모형이라고 한다.프로토타입 모형프로토타입은 사용자의 요구사항을 정확히 파악하기 위해 개발된 소프트웨어에 대한..
[Computer Science] [네트워크] 전송 계층
·
Computer Science/Network
전송계층전송계층의 역할응용 계층의 어플리케이션 프로세스 식별 → 포트를 통해서 식별한다.네트워크 계층의 신뢰성/연결성 확립포트네트워크 계층은 A호스트와 B호스트 어디있는지 IP 주소를 토대로 식별할 수 있다. 하지만 B 호스트한테 패킷이 도달한 후 어떤 응용 어플리케이션에게 패킷을 줘야할지 알 수 없다.포트번호를 어떤 어플리케이션에게 패킷을 전달해야하는지 알려준다.어플리케이션 프로세스를 식별해주는 고유한 문자열16비트로 표현 가능 65536개포트 범위 : 0번부터 65535번까지웰 노운 포트, 시스템 포트,대중적인 포트HTTP, HTTPS 등 대중적인 프로토콜을 할당해주는 포트등록된 포트잘 알려진 포트에 비해서는 덜 범용적이지만 흔히 사용되는 애플리케이션동적포트, 사설 포트, 임시포트사용자가 자유롭게 할..
[Computer Science] [네트워크] 네트워크 거시적으로 보기
·
Computer Science/Network
네트워크 거시적으로 보기이번에는 컴퓨터 공학 중 중요한 개념인 네트워크에 대해서 배웠다.네트워크의 구조, 프로토콜 개념 등 기본적인 내용을 학습하였다.컴퓨터 네트워크컴퓨터를 이용하여 웹사이트에 접속하거나 여러 프로그램을 실행해본 경험이 있다면 네트워크에 대한 것도 많이 들어봤을것이다. 기본적으로 네트워크를 통해 채팅을 하고 사진을 보며 여러 정보들을 주고 받을 수 있다.네트워크란, 여러 장치들(host)이 서로 정보를 주고받을 수 있는 통신망이다.인터넷그렇다면 인터넷은 무엇일가? 인터넷을 통해 우리가 뉴스를 보고 쇼핑몰에서 주문도 한다.인터넷은 LAN으로 이루어진 네트워크를 ISP를 통해 WAN으로 접속하여 WAN에 접속만 한다면 전세계 언제 어디서든 정보를 주고 받을 수 있다.컴퓨터 네트워크 구성 요소..
[Computer Science] 컴퓨터구조 & 운영체제 기술면접 준비
·
Computer Science/기타
지난 시간동안 컴퓨터 공학을 공부하면서 컴퓨터 구조와 운영체제에 대해서 학습을 하고 정리를 해봤다.이번에는 기술 면접에서 자주 나오는 질문들을 공부해보자.복습하고 공부한 내용을 면접에서 어떻게 말할 것인지 생각해보려고 한다.프로세스란내가 아는 프로세스는 실행 중인 프로그램의 운영체제의 실행 단위이다.보조기억장치(SSD, HDD)에 저장된 프로그램이 실행되면 생성된다.프로세스는 부여받은 PCB(Process Control Block)을 갖고 CPU에 할당되는 순서가 정해지고 상태를 가지며메모리 상에 코드, 데이터, 스택, 힙 영역을 포함하는 독립적인 메모리 공간을 할당 받는다.이때 영역들은 연속적으로 할당되어 있지 않고 불연속적으로 할당한다.스레드란스레드는 위에서 이야기 하였던 프로세스의 작업 단위이다.일..
[Computer Science] [운영체제] 파일 시스템
·
Computer Science/Operating System
운영체제에 파일 시스템에서 학습해보자. 파일과 디렉터리를 관리해주는 시스템.파일과 디렉터리(폴더)를 관리하는 커널의 한 부분다양한 파일 시스템이있고,여러파일시스템을동시에사용할수있음파일보조기억장치의 의미있는 정보의 집합구성요소이름실행하기 위한 정보부가정보(속성, 메타데이터)유형 (확장자)크기생성날짜마지막 접근 날짜마지막 수정 날짜생성자소유자위치파일(+ 디렉터리) 접근 단위: 블록(block)운영체제가 파일의 접근하는 단위(읽고 쓰기)디렉터리계층적인 구조루트디렉터리 / 최상위폴더절대경로와 상대경로많은 운영체제는 디렉터리를 파일과 동일하게 간주한다(중요함)디렉터리 구성 정보파일이름위치를유추할수있는정보파일 시스템의 종류에 따라 (파일 속성)디렉터리 테이블 파일 유형파일 시스템이 만들어지기까지파일 시스템파일과 디..
[Computer Science] [운영체제] 가상 메모리 관리
·
Computer Science/Operating System
스와핑(swapping)프로세스를 보조기억장치의 일부 영역(스왑 영역)으로 쫓아내고 당장 필요한 프로세스를 적재하는 메모리 관리 기법스와핑을 이용하면 좋은점은 현재 메모리의 크기보다 더 많은 프로세스를 적재할 수 있는 장점이 있다. 아래 이미지를 보면 프로세스 B를 보조기억장치로 스왑 아웃 시킨다. 당장 필요하지 않는 프로세스를 보조기억장치로 스왑 아웃할 수 있다.스왑 아웃프로세스를 보조기억장치의 일부 영역으로 쫓아내는 것스왑 인(swap-in)스왑 아웃된 프로세스를 메모리에 적재하는 것스왑 영역스왑 아웃된 프로세스가 적재되는 보조기억장치 영역운영채제가 메모리를 관리하는 방법연속 메모리 할당보통은 생각하는 프로세스가 메모리에 적재되는 방법이 아래와 같지 않을까? 라고 생각한다.(연속 메모리 할당) 아니다..
[Computer Science] [운영체제] 동기화와 교착상태
·
Computer Science/Operating System
동기화와 교착상태동기화동시다발적으로 실행되는 프로세스와 스레드의 실행 순서와 자원의 일관성을 보장해야 한다.운영체제가 제공하는 동기화의 의미실행 순서 제어: 프로세스를 올바른 순서로 실행하기 (실행 순서 제어를 위한 동기화)Book.txt가 없다면 파일을 만들고 값을 쓰고 저장하는 프로세스Book.txt를 읽어들이는 프로세스여기서 2번은 Book.txt가 있다는 조건이 만족되어야만 실행 가능즉, 1 → 2 순으로 실행해야만 올바르게 실행된다.상호 배제: 동시에 접근해서는 안되는 자원에 하나만 접근하기2만원 입금 프로세스잔액을 읽어들인다잔액에 2만원을 더한다더한 값을 저장한다  5만원 입금 프로세스잔액을 읽어들인다잔액에 5만원을 더한다더한 값을 저장한다  문제의 근본적인 발생 원인동시에 접근해서는 안되는 ..
[Computer Science] [운영체제] CPU 스케줄링
·
Computer Science/Operating System
프로세스 우선순위와 스케줄링 큐스케줄링여러개의 프로세스가 동시다발적으로 실행된다.모든 프로세스는 실행하기 위해 자원이 필요하다.운영체제가 공정하고 합리적으로 자원을 배분하는 방법이 스케줄링이다.모든 프로세스(및 스레드)는 실행되기 위해 CPU를 필요로 한다여러 프로세스들이 CPU를 나눠 사용하는 방법?정해진 시간 동안 돌아가면서 CPU를 사용하는 것이 가장 좋지 않을까?아니다. 프로세스마다 우선 순위가 다르다프로세스 우선순위는 PCB에 명시 된다.CPU 우선순위가 높은 프로세스는 더 많이 할당받아 실행이 자중하다.PRI, NI : 낮을수록 높은 우선순위, PRI는 운영체제, NI는 사용자우선순위의 차이를 보이는 대표적인 프로세스 유형I/O bound process, CPU bound processI/O ..
[Computer Science] [운영체제] 프로세스와 스레드
·
Computer Science/Operating System
프로세스와 스레드프로세스란 실행중인 프로그램을 뜻한다.같은 프로그램도 별도의 프로세스가 될 수 있다.포그라운드 프로세스 & 백그라운드 포로세스많은 종류의 프로세스가 있지만 대표적인 프로세스가 포그라운드 프로세스 & 백그라운드 포로세스가 있다.백그라운드 프로세스들 중에서는 지금 당장 사용자와 상호작용이 없지만 대기중에 있는 애들이 서비스에 있다.프로세스 제어 블록(PCB)동시다발적으로 실행되는 프로세스를 효율적으로 관리하기 위해서 PCB가 있다.프로세스의 꼬리표라고 생각하면 좋다. 모든 프로세스마다 갖고 있다.같은 프로그램도 별도의 프로세스가 있으면 각각의 PCB를 갖고 있다.PID: Process ID, 프로세스에 할당되어 있는 고유한 번호, 식별자레지스터스케줄링 정보메모리 정보사용한 파일 정보입출력장치..
[Computer Science] [컴퓨터구조] Memory
·
Computer Science/Computer Architecture
RAM & ROM메인 메모리에는 두개의 하드웨어가 존재한다. 바로 RAM과 ROM간단하게 설명하면 RAM은 Random Access Memory로 어떤 주소에 접근하든 소요되는 시간이 동일하다, 임의의 위치에 접근 하는 시간이 동일하다는 뜻이다.그렇다면 ROM은 Read Only Memory로 읽기 전용이라는 뜻이다.MainMemory는 램과 롬이 있지만 보통 램을 지칭하는 경우가 많다RAM휘발성 저장장치, 전원이 꺼지면 데이터가 모두 사라진다.메모리에서 실행해야 할 데이터를 저장하고 있다.크기가 클수록 빠르게 실행하기 유리하다. 그 이유는 메모리 크기가 크다면 보조기억장치에서 많은 데이터를 갖고와서 저장할 수 있다. CPU는 보조기억장치에 있는 데이터를 가져오려면 Memory를 통해 가져와야 한다.DR..
[Computer Science] [컴퓨터구조] 보조기억장치와 입출력장치
·
Computer Science/Computer Architecture
보조기억장치와 입출력장치보조기억장치와 입출력장치는 완전히 별개의 대상이라고 보긴 어렵다.단지, 보조기억장치는 보관할 데이터를 저장하는 특별한 형태의 입출력장치라고 보는게 좋다.(일부 서적은 보조기억 + 입출력 장치를 묶어서 주변장치라고도 한다.)실무에서 주로 사용되는 보조기억 장치를 뽑아보면 하드디스크와 플래시 메모리이다.하드디스크와 플래시 메모리하드 디스크 드라이브(HDD)플래시 메모리 기반으로 만든 저장 장치솔리드 스테이트 드라이브USB 메모리SD 카드하드 디스크LP, CD/DVD 플레이어와 유사플래터: 하드 디스크 상에서 실질적으로 데이터가 저장되는 부분스핀들: 플래터를 회전 시키는 부분헤드: 플래터의 데이터를 읽고 쓰는 부분, 헤드는 미세하게 떠 있는데 충돌이 되었을때 데이터를 잃을 수 있다.디스..
[Computer Science] [컴퓨터구조] CPU(2)
·
Computer Science/Computer Architecture
[컴퓨터 구조] 멀티코어와 멀티 프로세서멀티코어와 멀티 프로세서 부분은 빠른 CPU를 위한 하드웨어적인 설계로 볼 수 있다.빠른 CPU를 만들고 싶다면 CPU의 성능을 끌어올리고 싶다면 어떻게 CPU를 설계해야 할 까?CPU의 성능을 끌어올리는 아주 기본적인 내용컴퓨터 부품은 클럭 신호에 맞춰 일사분란하게 움직인다.CPU는 클럭 신호(제어장치가 클럭신호를 받아냄)에 따라 명령어 사이클에 맞춰 명령어를 실행한다.클럭 신호를 바르게 반복한다면?박자가 빨라지고 명령어 사이클이 빨라진다.실행속도가 더 빨라지는 것이 일반적.클럭 속도가 높은 CPU는 일반적으로 성능이 좋다.클럭 속도(Hz): 1초에 반복된 클럭의 횟수로 측정 1Hz, 1GHz = 10^9Hz(오늘날 CPU 속도)좋은 CPU 일수록 클럭속도가 높은..
[Computer Science] [컴퓨터구조] CPU
·
Computer Science/Computer Architecture
CPU컴퓨터 구조 중에서 가장 중요한 부품인 CPU는 중요한 개념이 많다.CPU의 구성 요소대표적인 구성 요소 3가지를 확인 해보고 그 중 레지스터를 더 자세히 공부하였다.ALU(산술논리연산장치)계산을 담당하는 회로이다. 즉 계산만을 위해 존재.더하기, 빼기(2의보수로 더하기 처리), 곱셈, 오버플로우 검출 등제어 장치명령어를 해석하고 제어 신호를 내보내는 장치물론 다른 장치도 제어 신호를 내보낼 수 있다.레지스터들명령어 처리 전후로 값을 임시 저장하는 장치, 여러개가 존재한다.특수한 목적으로 있는 레지스터도 있다.개발자 입장에서 여기서 가장 중요한 장치는 무엇일까?특별한 직군을 제외하고 레지스터 이외의 장치를 다룰 필요가 없다.그런데 레지스터는 보안, 로우 레벨에서 개발하는 개발자들은 레지스터를 많이 ..
[Computer Science] [컴퓨터 구조] 데이터
·
Computer Science/Computer Architecture
데이터이진수와 2의 보수컴퓨터는 어떻게 0과 1 즉 이진수로 양수, 음수, 소수, 문자를 표현할 수 있을까?양수는 이진수로, 음수는 2의 보수로 소수는 부동소수점으로 문자는 문자집합과 인코딩으로 이해한다.이진법(이진수)이진법은 0과 1로 모든 수를 표기하는 방법이다.이진수는 0과 1만으로 표현된 수이다.1을 넘어가는 시점에 자리올림을 한다.단점: 숫자가 너무 길어진다!십육진법(십육진수)십육진법: 1~9과 A~F로 모든 수를 표기하는 방법A==10, B==11, C==12, D==13, E==14, F==1515(F)을 넘어가는 시점에 자리올림!십진수말고 십육진수를 사용하는이유는 이진수와 십육진수의 변환이 편한다.2의 보수법0과 1만으로 음수를 표현하는 방법 중 하나어떤 수 n을 그보다 큰 2^n에서 뺀 ..