앞으로 운영체제에 대해 수 글을 걸쳐 알아볼 것이다. 우선 운영체제가 무엇인지 간단하게 살펴보고 컴퓨터 시스템의 동작 원리에 대해 간단헤개 알아볼 것이다. 운영체제의 핵심인 CPU 스케쥴링과 메모리 관리를 이해하려면 해당 파트에 대한 선수 지식이 필수이기 때문이다. 1. 운영체제란? 목적? 분류? 2. 인터럽트란? 컴퓨터 시스템 동작원리로 알아보자. 3. 하드웨어, 메모리 및 메모리 보안 방법? 4. 프로그램의 구조, 실행 시 작동 과정? 5. 프로세스란? 6가지 상태? PCB? 6. 스레드, 멀티스레드란? 프로세스와의 차이? 7. CPU 스케줄링? 8. ''업데이트 예정'' 1. 운영체제란? - 정의: 컴퓨터 하드웨어 바로 윗단에 설치되는 소프트웨어(출처: 운영체제와 정보 기술의 원리-반효경 저). 하..
이전 포스팅 2. 월드와이드웹(WWW), 프로토콜(Protocol)이란?에서 WWW는 인터넷을 통해 다양하고 광범위한 웹페이지로 편리한 접근방법을 제공하는 상호작용 연결 시스템이라고 배웠다. 그리고 WWW는 HTTP 프로토콜을 사용하며, 프로토콜은 통신 규약이었다. 이번 글에서는 ISO(국제표준단체)가 제정한 네트워크 통신 규약인 OSI 7계층에 대해 알아보자. 1. OSI 7계층 모델이란? - 정의: 네트워크 프로토콜이 통신하는 구조를 7계층으로 나누어 각 계층간 상호작용하는 방식을 정해 놓은 것. ISO가 제정했다(출처: 위키해시). Open system interconnection model은 시스템 간 architecture와 상관 없이 서로 다른 시스템 간 상호 연결을 Open하는 ISO 기준이..
이전 포스팅 네트워크와 종류(LAN, WAN, 인터넷) 및 ISP란? 에서 인터넷은 월드와이드웹(WWW)의 보편화로 더욱 알려진 네트워크라고 했습니다. 그렇다면 월드와이드웹은 무엇일까요? 1. 월드와이드웹(WWW)란? - 한줄 요약: 인터넷을 통해 다양하고 광범위한 웹페이지로 편리한 접근 방법을 제공하는 상호작용 연결 시스템. * 월드와이드웹은 3가지의 특징이 있다. 첫번째로 www는 인터넷 서비스다. TCP/IP를 사용한 범지구적 네트워크 서비스를 이용하여 웹 페이지를 공유하는 서비스다. 두번째로 www는 HTTP 프로토콜을 사용한다. HTTP 프로토콜은 HyperText Transfer Protocol의 약자이며 직역 시 하이퍼텍스트를 전달하는 프로토콜이다. 즉 하이퍼텍스트를 전달하는 방식을 사용하여..
앞으로 컴퓨터간 통신할 수 있게 만든 환경인 네트워크에 대해 알아보도록 하겠습니다. 네트워크란 무엇인가 부터 시작하여 이를 모두가 원활하기 사용하기 위해 동의한 규칙들을 거시적인 관점(OSI 7계층)에서 알아가보도록 하겠습니다. 그리고 추후 Web을 사용하기 위한 규칙인 http를 중점적으로 알아보겠습니다. 우선 우리의 목적인 네트워크부터 알아보죠. 1. 네트워크란? - 컴퓨터 상호간에 정보를 교환할 수 있도록 연결된 통신망.(출처: 네이버 지식백과) 즉, 컴퓨터들을 마치 Net처럼 연결하여 통신할 수 있는 환경을 구축한 것이다. 이와 같은 환경에서 우리는 데이터를 주고 받는다. 보통 두개 이상의 컴퓨터를 연결하여 데이터를 주고 받는 환경을 네트워크라고 한다. 이런 네트워크는 어떤 종류들이 있을까? * ..
Set이란? 사전적 정의 수학용어의 하나로 어떤 조건에 따라 결정되는 요소의 모임을 말하며, 그 요소를 집합의 원소라고 한다. 어떤 원소가 그 집합에 들어 있는지, 들어 있지 않은지를 식별할 수 있어야 하고, 집합에서 취한 두 원소가 서로 같은지, 같지 않은지를 식별할 수 있어야 한다. (출처: 네이버 지식백과) 사전적 정의에 따르면 Set내에 값은 유일성을 보장해야한다. 1. 설명 값의 컬랙션 컬랙션 내 값의 유일성 보장 삽입 순서대로 순회(iterate) 가능 let fruitSet = new Set(['apple', 'orange']); for (fruit of fruitSet) { console.log(fruit); } // apple // oragne // 출력! 2. 값의 동일성은 어느정도로 ..
동적 타입 Javascript는 느슨한 타입, 즉 타입과 변수가 느슨하게 묶인 동적(dynamic) 언어입니다. 플레이를 누르면 컴퓨터가 이 파일을 실행할 수 있을지 미리 아는 것이 아닌(컴파일 시) 코드를 하나 하나 실행하면서(런타임) 타입과 변수가 묶이는 방식입니다. 두 종류의 자바스크립트 타입 - 자바스크립트의 타입은 크게 두가지로 나뉩니다. Primitive 값과 Object(객체)값. - Primitive 값은 말 그대로 원시 값이기 때문에 변할 수가 없습니다. 얘네들이 원본 그 자체가 되는 것들이죠. - Object 값은 Array 등 기타 모든 것으로 보입니다. 이들은 Primitive 값을 묶는 자료구조라고 볼 수도 있겠군요. Primitive 값에 대해 먼저 알아보죠 Primitive(원..
경쟁적 전염 https://www.acmicpc.net/problem/18405 18405번: 경쟁적 전염 첫째 줄에 자연수 N, K가 공백을 기준으로 구분되어 주어진다. (1 ≤ N ≤ 200, 1 ≤ K ≤ 1,000) 둘째 줄부터 N개의 줄에 걸쳐서 시험관의 정보가 주어진다. 각 행은 N개의 원소로 구성되며, 해당 위치 www.acmicpc.net 사고 과정 보자마자 떠오르는 것은 이를 그대로 구현하는 방법이다. 매번 1, 2, 3 순서대로 전개하고 마지막에 정답을 찾는다. 매 초마다 1,2,3 순으로 전개해줘야 하기 때문에 순서를 queue를 이용하여 구하면 된다. 목표 위치에 가장 빨리 도달하는, 목표 위치를 가장 빨리 탐색하는 노드를 찾는 문제이므로 BFS로 해석할 수 있다. 또다른 풀이는 '..
오늘 세가지 기쁨이 있었다. 첫번째, 소프트웨어 프로그램 개발은 아주 재밌다. 또한 재밌을 것이다. 두번째, 장기적인 관점을 보며 쌓아왔던 일명 '가지치기' 사고방식이 나에게 큰 도움이 된다. 세번째, 내가 상상하는 것들을 만들 수 있는 사람이 됐다. 또한 될 것 같다. 첫번째 소프트웨어 개발이 아주 재밌고 재밌을 것 같다. 뭔가 잘 안맞으면서도 미묘하게 맞는 이 말은 오늘 알고리즘 공부를 하며 깨달았다. 나는 문제 해결을 아주 좋아하고 또한 효율적으로 문제가 해결되는 상황을 아주 좋아한다. 알고리즘의 시간 복잡도를 낮추는게 아주 재밌었다. 문제를 하나 더 또하나 더 풀고 싶은 감정이 들었다. 근데 이게 왜 그렇게 대단한 감정이냐고 누군가 물을 수 있다. 나는 문제 해결을 잘 못했고 알고리즘은 매우 못 ..