CS 42

[운영체제] PCB : 프로세스 제어블록

우리는 PC를 이용해 웹 서핑을 하고 동시에 음악을 들으며 친구한테 메시지를 보낸다. 우리는 이러한 일들이 동시에 일어나고 있다고 느낀다. 하지만 실제로 굉장히 빠른 시간에 프로세스들이 교체되어 실행되는 것이다. 이때 운영체제가 현재 실행되고 있는 프로세스들을 관리하여 실행을 유지할 수 있는 정보들이 저장된 자료구조를 PCB(Process Control Block)이라고 한다. PCB의 구성요소 프로세스를 할당하거나 프로세스가 교체되었을 때 지금까지 수행된 내용을 기록하기 위해서는 PCB 내의 여러가지 요소들이 사용된다. PCB의 구성요소를 파악한다면 하나의 CPU에서 어떻게 여러 개의 프로세스가 실행될 수 있는지 파악할 수 있을 것이다. 프로세스 상태 : CPU를 할당해도 되는지 결정하기 위해 필요하며..

CS/운영체제 2021.09.13

[운영체제] 스레드는 무엇일까?

먼저 프로세스에 대해서 공부를 했었다. 프로그램은 파일이 메모리에 올라가 있지 않고 디스크에 저장되어 있는 상태이며 프로그램을 실행시켰을 때 메모리에 올라가서 프로세스가 생성이 된다. 그렇다면 스레드는 무엇이고 어떻게 동작을 하는 것일까? 스레드가 생겨난 이유 스레드라는 개념이 생기기 전에는 프로그램이 시작되고 끝나기 전까지 하나의 프로세스를 사용하였다. 하지만 점점 프로세스가 복잡해졌고 하나의 프로세스로 프로그램을 실행시킬 수 없었다. 그렇다고 프로세스를 여러 개 사용할 수도 없다. 왜냐하면 운영체제는 안정적인 운영을 위해 프로세스에게 할당한 메모리 내에서만 활동할 수 있도록 하였기 때문이다. 즉 하나의 프로그램에 여러 개의 프로세스를 사용하더라도 프로세스끼리 정보가 공유되지 않기 때문에 오류가 발생한..

CS/운영체제 2021.09.10

[자료구조] Array와 Linked List의 차이는 무엇일까?

Array와 Linked List가 무엇인지 안다면 그 차이는 쉽게 알 수 있을 것이다. Array 배열은 특정 크기만큼 연속된 메모리 공간에 데이터를 저장하는 자료구조이다. 만약 int형 데이터 3개를 저장할 수 있는 배열을 생각해보자. 그렇다면 아래의 그림처럼 연속된 공간에 메모리를 확보하여 데이터를 이곳에 저장할 수 있게 된다. 위의 그림에서 볼 수 있듯이 연속된 공간에 데이터들이 나열되어 있기 때문에 처음 주소만 알면 다른 위치도 쉽게 알 수 있을 것이다. 따라서 배열은 랜덤으로 접근하는 것이 가능하다. 그렇다면 어떻게 랜덤으로 접근하는 것이 가능할까? C언어로 예를 들어보면 배열을 선언했을 때 배열의 주소는 배열에 저장되어 있는 첫 번째 원소의 주소와 같다. 이때 4번째 데이터를 조회한다고 하면..

CS/자료구조 2021.09.08

[자료구조] Hash Table : 충돌이 발생하는 이유와 해결 방법

오늘은 Hash Table라는 자료구조에서 충돌이 발생하는 이유와 충돌이 발생하지 않도록 하기 위해서는 어떻게 해야 하는지 알아본다. 먼저 Hash Table은 저장되는 데이터가 (key, value)처럼 하나의 쌍을 이루는 자료구조를 말한다. 이때 key가 존재하지 않는 value는 저장할 수 없으며 key가 중복되어서는 안 된다. 해쉬 함수 학생들의 정보를 Hash Table에 저장하려고 한다. 이때 학생들의 학번을 key로 하는데, 학번이 2020103과 같은 형태로 되어있어서 배열의 크기를 이에 맞춰서 선언해야하며 배열을 생성하더라도 쓰지 않는 공간이 많기 때문에 효율적이지 못하다. 따라서 학번을 해쉬 함수로 전달하여 반환된 값을 key로 설정하려고 한다. 해쉬 함수는 다음과 같다. 학번을 입력하..

CS/자료구조 2021.09.06

[운영체제] 프로세스가 무엇일까?

프로세스의 개념 프로세스는 실행 중인 프로그램을 뜻한다. 그렇다면 프로그램은 무엇일까? 프로그램은 아직 실행하기 전 상태의 실행 파일들을 의미한다. 바탕 화면에 있는 각각의 파일들이 프로그램이 되며 더블 클릭을 했을 때 프로그램이 실행 된다. 이때 프로그램이 실행 되면 CPU 메모리를 점유하게 되고 프로세스가 진행되는 것이다. 그렇다면 프로세스를 구성하는 것이 무엇인지 알아보자. Code 영역 : 프로그램의 코드가 올라가고 프로그램을 실행 시켰을 때 실행 파일 내에 존재하는 명령어들이 올라가는 메모리 영역이다. Data 영역 : 전역 변수와 static 변수에 할당을 위한 메모리 영역이다. Heap 영역 : 개발자가 동적 할당할 때 필요한 메모리 영역이다. Stack 영역 : 함수 호출 및 함수의 인자와..

CS/운영체제 2021.08.31

[네트워크] 프록시 서버를 사용하는 이유

프록시 서버가 무엇일까? 프록시 서버는 클라이언트와 서버 사이의 중계역할을 한다. 클라이언트가 서버에 직접적으로 데이터를 요청하지않고 프록시 서버에 요청을 한다. 프록시 서버는 클라이언트의 요청을 서버에 전달한 후에 받은 데이터를 클라이언트에 전달한다. 프록시는 포워드 프록시, 리버스 프록시가 존재한다. 이는 프록시 서버를 어디에 위치시키느냐에 따라 달라지는데 클라이언트 측에 위치시키는 것을 포워드 프록시, 서버 측에 위치시키는 것을 리버스 프록시라고 한다. 포워드 프록시는 아래의 그림처럼 표현할 수 있으며 일반적으로 포워드 프록시를 프록시라고 한다. 브라우저에서 구글검색을 하면 프록시 서버에서 데이터를 받아 서버에 요청 후에 값을 돌려준다. 이러한 방식은 대역폭을 감소시키고 서버가 어떤 클라이언트가 요..

CS/네트워크 2021.07.21

[네트워크] 서버의 부하를 분산하는 방법

클라이언트의 요청이 많을수록 웹 서버의 부하가 높아지게된다. 이때 웹 서버가 어떻게 부하를 분산하는지 알아보자. 서버의 부하 분산 서버의 부하를 분산하기 위해 3대의 웹 서버를 사용한다고 해보자. 그렇다면 각각의 서버가 담당하는 패킷의 수가 감소할 것이다. 하지만 1대의 웹 서버가 동작하지 못하는 상황이 온다면 클라이언트들은 이러한 상황을 모르고 계속해서 액세스할 것이기 때문에 비효율적이다. 로드 밸런서 이때 웹 서버와 클라이언트 사이에 로드 밸런서를 둘 수 있다. 로드 밸런서는 클라이언트의 요청을 대신 받아 서버에 전달하는 역할을 하는데 DNS 서버에 로드 밸런서의 주소를 등록하여 사용한다. 따라서 클라이언트는 웹 서버가 아닌 로드 밸런서에 요청을 하고 로드 밸런서는 웹 서버에서 받은 요청을 클라이언트..

CS/네트워크 2021.07.20

[네트워크] 방화벽의 동작원리

방화벽은 외부 네트워크로부터 내부 네트워크를 보호하는 역할을 한다. 방화벽을 설치하지 않는다면 외부 네트워크에 그대로 노출이 되어있는 상태가 되기 때문에 공격받기가 쉬워진다. 따라서 방화벽의 설치는 필수적이다. 방화벽은 종류에 따라 동작하는 원리가 조금씩 다르다. 오늘은 방화벽의 기본 동작과 종류에 대해 알아보자. 방화벽의 기본 동작 방화벽은 외부에서의 모든 접속을 차단한다. 이후 보안 규칙에 따라 일부 요청을 내부 네트워크로 접속할 수 있도록 허가하고 포트번호를 통해 특정 프로그램에만 접근할 수 있도록 한다. 예를 들어 어떠한 패킷이 웹 서버로 전송되었다면 80번 포트를 열어 해당 패킷이 접속할 수 있도록 허용한다. 방화벽의 종류는 패킷 필터링형, 상태 분석형, 웹방화벽 등이 있으며 종류에 따라 동작방..

CS/네트워크 2021.07.19

[네트워크] 네트워크 장비

실제로 클라이언트와 서버가 주고받는 신호는 전기신호이며 이는 다양한 네트워크 장비를 통해 통신이 이루어진다. 네트워크 장비의 종류와 역할을 알아보자. 리피터 패킷을 전기신호로 변환하여 전송한다. 이때 전기신호가 이동하는 거리가 먼 경우 신호의 세기가 약해진다. 펄스형태로 신호를 보냈지만 수신측에서 어떠한 모양의 신호도 받지 못할 수도 있다. 따라서 중간에 신호를 증폭하여 원래의 펄스형태로 보내질 수 있도록 한다. 전기신호가 이동하는 케이블의 길 경우 중간에 리피터를 설치하여 신호를 증폭한다. 허브 허브는 여러 대의 컴퓨터를 묶어주는 기능을 한다. 허브에 패킷이 들어오면 허브에 연결된 컴퓨터에 패킷을 전송하는데, 허브에 연결된 모든 컴퓨터에 전달하여 자신에게 온 것이 아니면 폐기하는 허브를 리피터 허브라고..

CS/네트워크 2021.07.12

[네트워크] TCP/IP

IP에서 사용 중인 패킷 교환 방식은 송신자가 수신자에게 보낼 데이터를 분할하여 패킷 형태로 송신한다. 이때 수신자는 여러 송신자로부터 패킷을 받게된다. 이때 네트워크의 상황에 따라 패킷의 순서가 달라지거나 전송되지 않을 수도 있다. 따라서 TCP에서 패킷이 흐름대로 수신자에게 전달될 수 있도록 도와준다. 결론적으로 IP는 패킷을 목적지까지 전달하는 것에만 집중을 하고 TCP는 패킷의 흐름을 관리하여 신뢰성을 확보한다. 그렇다면 IP와 TCP가 어떻게 동작하는지 자세히 알아보자. TCP의 동작과정 DNS에서 IP주소를 받아온 이후에 서버에 바로 데이터를 전송하지 않는다. 먼저 서버의 상태를 확인해야한다. 현재 서버가 나의 데이터를 받을 수 있는지 확인한 후에 데이터 전송이 이루어져야한다. 이를 위해 TC..

CS/네트워크 2021.07.08
728x90
반응형