0%

HTTP

HyperText Tranfer Protocol

인터넷에서 웹 서버와 사용자 컴퓨터에 설치된 웹 브라우저 사이에 문서를 전송하기 위한 통신규약이다.

HTTP 서버는 기본 포트인 80번 포트에서 서비스 대기중이며, 클라이언트가 80포트를 사용해서 연결하면 서버는 요청에 응답하면서 자료를 전송한다. HTTP는 정보를 ‘텍스트’로 주고 받는데 단순 텍스트로 주고 받기 때문에 네트워크에서 전송 신호를 인터셉트하는 경우 데이터 유출이 발생할 수 있다.

이런 보안상 문제를 해결해주는 프로토콜이 HTTPS이다.

Read more »

교착상태와 기아상태

교착상태란?

  • 무한 대기 상태: 두개 이상의 작업이 서로 상대방의 작업이 끝나기만을 기다리고 있기 때문에, 다음 단계로 진행하지 못하는 상태

1번차: a, b가 필요

2번차: b, c가 필요

3번차: c, d가 필요

4번차: a, d가 필요

image-20200221140245245

Read more »

동기화

  • 동기화: 작업들 사이에 실행 시기를 맞추는 것
  • ex) 1,2,3,4 번의 작업이 있음 -> 3,4번 작업이 시작되려면 1,2번이 완료되어야함 -> 1번은 완료되고 2번은 아직 끝나지 않았을때 3,4번은 기다려야 함

    동기화 이슈

  • 여러 스레드가 동일한 자원접근시 동기화 이슈 발생
    • 동일 자원을 여러 스레드가 동시 수정시, 각 스레드 결과에 영향을 줌

동기화 이슈 해결 방안

  • Mutual exclusion(상호 배제)
  • 쓰레드는 프로세스 모든 데이터를 접근할 수 있으므로, 여러 스레드가 변경하는 공유 변수에 대해 Exclusive Access필요
  • 어느 한 스레드가 공유 변수를 갱신하는 동안 다른 스레드가 동시 접근하지 못하도록 막기
Read more »

운영체제란? OS(Operating System)

운영체제(Operating System)는 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고, 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임입니다. 운영체제는 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로서 동작하는 시스템 소프트웨어의 일종으로, 다른 응용프로그램이 유용한 작업을 할 수 있도록 환경을 제공해 줍니다.
주요 운영체제: 윈도우, 리눅스, UNIX 등

image-20200216211643366

운영체제는 사용자 인터페이스 제공: 쉘(shell)

사용자가 운영 체제 기능과 서비스를 조작할 수 있도록 인터페이스를 제공하는 프로그램

운영체제는 응용 프로그램 인터페이스 제공:시스템 콜(System Call)

시스템 콜 또는 시스템 호출 인터페이스
운영체제가 각 기능을 사용할 수 있도록 시스템 콜이라는 명령 또는 함수를 제공 API내부에는 시스템콜을 호출하는 형태로 만들어지는 경우가 대부분

Read more »

바이너리 코드란?

바이너리 코드는 컴퓨터가 인식할 수 있는 0과 1로 구성된 이진코드를 의미한다.

기계어란?

  1. 기계어는 0과 1로 이루어진 바이너리 코드이다.
  2. 기계어가 이진코드로 이루어졌을 뿐이지 모든 이진코드가 기계어인 것은 아니다. ( 바이너리 코드 != 기계어)
  3. 기계어는 특정한 언어가 아니다. 단지, CPU제조사에서 CPU를 만들 때 해당 CPU에서 사용하는 명령어 집합을 공개하는데, 이것을 ‘기계어’라고 부를 뿐이다.때문에 CPU가 변경되면 기계어가 달라진다. 같은 동작을 하는 명령어지만 완전히 다른 0과 1의 나열이 될 수 있다는 말이다.
  4. 아주 기본적인 연산자들은 서로 호환이 되는 편이다.
  5. 같은 회사의 CPU라도 버전 별로 다른 명령을 포함할 수 있으며 다른 회사라도 같은 명령어 집합을 공유할 수도 있다.
Read more »

Thread(스레드)

  • Light Weight Process라고도 함
  • 프로세스
    • 프로세스간에는 각 프로세스의 데이터 접근이 불가
  • 스레드
    • 하나의 프로세스에 여러개의 스레드 생성 가능
    • 스레드들은 동시에 실행 가능
    • 프로세스 안에 있으므로, 프로세스와 Date,Code,Heap영역은 공유하고 스레드 각자의 스택과 레지스터를 갖는다.
      Thread는 각기 실행이 가능한 stack이 존재한다.image-20200219194857183
Read more »

가상메모리(Virtual Memory System)

가상 메모리 또는 가상 기억 장치RAM을 관리하는 방법의 하나로, 각 프로그램에 실제 메모리 주소가 아닌 가상의 메모리 주소를 주는 방식을 말한다.

폰노이만 구조(현 컴퓨터 구조)

  • 폰노이만이 제안한 구조
  • Memory에 프로그램과 데이터가 저장
  • 하나씩 꺼내어 CPU:Arithmetic Logic Unit으로 연산

image-20200225003829369

Read more »

프로세스간에는 어떻게 통신하는지, 쓰레드와 비교해서 가능한 상세하게 설명해주세요.

1
프로세스간에는 주소공간이 분리되어 있기 때문에, 프로세스간 통신을 위해서는 IPC라고 하는 별도의 기술을 사용해야 합니다.쓰레드의 경우에는 하나의 프로세스 주소공간안에서, CODE/TEXT/HEAP공간을 공유하기 때문에,별도의 통신 기술이 필요 없습니다.

프로세스와 쓰레드의 차이점에 대해 설명해주세요.

1
프로세스는 운영체제로부터 자원을 할당받아 실행하고,쓰레드는 프로세스로부터 자원을 할당받아 실행합니다.
2
하나의 프로세스안에서 쓰레드는 프로세스 CODE/TEXT/HEAP공간을 공유하지만, 해당 쓰레드만의 스택을 가지고 동작합니다.그래서 하나의 프로세스 안에서 생성된 쓰레드간에는 별도 기술을 쓰지 않고도 데이터 공유가 가능합니다.