코드 훔쳐보는 변태 코더
춤 좋아하는 백엔드 개발자(였으면 좋겠다)
전체 글 (95)
리액트 1달차 토이프로젝트 리뷰 (게임 커뮤니티 사이트) - 작성중

 

초기 목표

  • 리액트를 학습하기 위해서 (경험해보기 위해서..)
  • 백엔드 개발자 지망생으로서 프론트엔드 개발자들에게 어떻게 데이터를 가공해서 넘겨주면 좋을지 이해해보기 위해서
  • 백엔드, 프론트엔드가 완벽히 분리되어 있을때의 신경 쓸 수 있는 부분을 현업 체험 전에 경험해보자!

 

기존 서버사이드 개발 환경

  • 스프링부트 , 스프링 시큐리티, JPA , Mysql , Redis , 인텔리제이
  • 게시판
    • 게시글 관련
      • 쓰기, 읽기, 수정, 삭제, 검색
      • 게시글 추천, 조회수, 베스트 게시글 (최근 3일의 게시글 중 좋아요 10개 이상 상위 5개)
      • 게시글에 캐릭터 링크 후 클릭 시 해당 캐릭터가 등록된 게시글 혹은 캐릭터 정보 상세보기 조회 가능
    • 댓글 관련
      • 쓰기, 읽기, 수정, 삭제
      • 대댓글 (계단식이 아닌 하나의 댓글에 한 층(?)의 댓글이 열리는 로직
      • 대댓글 쓰기 읽기 수정 삭제
      • 베스트 댓글 (해당 게시글의 좋아요 10개 이상 상위 5개)
  • 회원
    • 가입,로그인,탈퇴,정보 변경
    • 세션 로그인 방식 -> Jwt 토큰 인증 방식
      • 원활한 소통을 위해서 세션 인증 방식에서 변경 하였으나, 실질적으론 변경할 이유가 없었다.
        • JSESSIONID 쿠키가 클라이언트로 받아와지지 않았던 오류가 발생 했을때 변경했으나, 토큰을 쿠키에 저장하는 방식으로 구현하니 세션 인증 방식과 다를게 없었다.
        • 오히려 토큰 인증 방식으로 구현하니 잡다한 오류가 많이 발생해 기존의 스프링 시큐리티에서 제공해주는 안정적인 폼 로그인 방식이 더 나아보였다.
    • 회원과 모험단 연동 (직접 연동이 아닌 단순 서버사이드에서 db에서 연관관계를 맺는 방식)
    • 회원과 캐릭터 즐겨찾기 등록
    • 프로필 이미지 변경
  • 캐릭터
    • 캐릭터 정보 검색 
    • 캐릭터 랭킹 조회 (모험단, 개인 캐릭)

 

초기 화면 구현 목표

  • 유지보수가 쉽도록 재사용 가능한 컴포넌트 만들기
  • 상위 컴포넌트에서 하위 컴포넌트로 여러개의 props 를 넘겨줘서 의존하게 하는 행위 지양
  • 반응형 템플릿 제작
  • 딱딱한 사이트가 아닌 최소한의 애니메이션을 이용해 동적인 웹페이지 구성
  • 기존의 서버사이드 개발시에 중요하게 생각했던 계층형 구조를 생각하며 개발 및 정리

클라이언트 사이드 진행상황

  • 개발 환경
    • 리액트 최신버전, 타입스크립트, REST API, Material UI, Styled Component 
  • 게시판 
    • 게시글 관련 ⭕️
      • 쓰기, 읽기, 수정, 삭제, 검색 ⭕️
      • 게시글 추천, 조회수, 베스트 게시글 (최근 3일의 게시글 중 좋아요 10개 이상 상위 5개) ⭕️
      • 게시글에 캐릭터 링크 후 클릭 시 해당 캐릭터가 등록된 게시글 혹은 캐릭터 정보 상세보기 조회 가능 ⭕️
    • 댓글 관련 ⭕️
      • 쓰기, 읽기, 수정, 삭제 ⭕️
      • 대댓글 (계단식이 아닌 하나의 댓글에 한 층(?)의 댓글이 열리는 로직 ⭕️
      • 대댓글 쓰기 읽기 수정 삭제 ⭕️
      • 베스트 댓글 (해당 게시글의 좋아요 10개 이상 상위 5개) ⭕️
  • 회원
    • 가입 ⭕️,로그인 ⭕️,탈퇴 ❌ ,정보 변경  ❌
    • 세션 로그인 방식 -> Jwt 토큰 인증 방식 ⭕️
    • 회원과 모험단 연동 (직접 연동이 아닌 단순 서버사이드에서 db에서 연관관계를 맺는 방식)  ❌
    • 회원과 캐릭터 즐겨찾기 등록 ❌
    • 프로필 이미지 변경 ⭕️
  • 캐릭터
    • 캐릭터 정보 검색  ⭕️
    • 캐릭터 랭킹 조회 (모험단, 개인 캐릭) ⭕️

 

메인화면

 

재사용 가능한 테이블 구현

모바일 환경에서도 이용 가능하도록 반응형으로 개발

 

그리드를 이용하여 모바일 환경에서는 한줄, pc 및 태블릿 환경에서는 두줄로 랭킹을 표시하도록 구현

 

  • 단순히 각각의 파트별로 각각의 컴포넌트를 매번 새로 만들 필요 없이 , 단순 틀로 사용 할 수 있는 테이블 컴포넌트를 선언 후 , 테이블의 양옆에 컴포넌트를 렌더링하거나 행동을 지정할 수 있도록 구현했다.
  • 내용에는 각각 필요에 따라 다른 내용이 들어갈 수 있도록 구현했다. (테이블 컴포넌트 > 내용 컴포넌트 로 이어지는 트리)
    • 해당 부분은 생각보다 어려운 부분은 없었고, 개발 초기에 구현했던 부분이라 어디까지 나눠서 어떠한걸 props 로 전달해줘야할지 고민이 많았던 부분이었다.

이런식으로 상위 컴포넌트에 전적으로 의지하도록 구현하였다. (단순히 이것 하나로 렌더링 할 무언가가 있을것 같지 않다는 생각이 들었다.)

재사용 가능한 검색창 구현

깔끔한 느낌의 검색창을 구현하였다.
최근 검색 기록과 빠른 검색을 지원해준다.

 

영상을 업로드 하지 못해서 아쉽지만 mui 의 트랜지션 api 를 사용해 애니메이션을 추가하여서 딱딱한 느낌을 없애주었다.

  • 처음엔 단순 노동으로 셀렉트 박스와 서치박스를 합쳐서 해당 컴포넌트를 구현했었다가, mui 의 input base 와 paper 라는 api 를 이용해서  사각형 카드 박스에 버튼으로 셀렉트박스와 input base 로 검색 input 창을 구현 후 합쳤다.
    • 이때 css 에 대해서 한번 더 배우게 되었다.
    • 해당 셀렉트 박스를 api를 이용하지 않고 구현하려면 밑의 화면을 덮어쓰는 쪽으로 구현해야 하는데, position 속성을 처음으로 알게되어 이용하게 되었다.
  • 해당 검색창 구현은 코드도 그렇지만 ui 적으로 더더욱 유저 친화적인 부분으로 개발하려고 노력하였다.
    • 어떻게 보면 검색창 / 선택 박스 / (최근 검색 기록 , 빠른검색  ( 최근검색기록 출력화면 , 빠른검색 출력화면 )) 이런식으로 분리되 어 있어서 각각의 이벤트 발생 시에 핸들링을 어떻게 해야할지 고민을 많이 했다.
    • 하나의 컴포넌트를 통으로 렌더링 하는게 아닌 하나의 div 에 여러개의 div 가 들어가있는 형식이라 이때 검색 창의 외부를 클릭시에 옵션창이 사라진다던지, 옵션창이 나와있는데 셀렉트박스를 누르면 사라졌다가 셀렉트 박스가 닫혀지면 다시 나타난다던지 하는 로직을 구현하는데 머리를 많이 썼다.

useRef 를 이용하여 클릭 이벤트를 핸들링하였다.

  • 해당 기능을 구현하면서 useRef 훅과 dom 오브젝트 를 다루는법을 조금이나마 이해했다.
  • 결국 chatGPT 의 도움을 받긴 했지만, 그래도 해당 부분에 대해서 좀 더 논리적으로 고민했던 흔적이 남아있어서 해당 컴포넌트를 구현했을 때 좀 뿌듯했다.
  Comments,     Trackbacks
네트워크 일반 03-22 (정리) OSI 7계층과 프로토콜

계층 구조

  • OSI 참조모델은 7개의 계층으로 나누어 정의된다.
  • Divide and Conquer 개념을 통해 각 계층간의 독립성 을 유지한다.
  • 의존성을 낮춘다.
  • IP주소 → 사용자가 변경 할 수 있다. / MAC 주소 → 제작 시에 정해져서 나온다.
  • 맥주소 → 48비트(앞 24비트 : 브랜드 / 뒤 24비트 : 기기별 고유번호) , 아이피주소 → (버전4) 32비트 , 포트 → (프로세스로 구분) 16비트

OSI 7계층과 TCP / IP 계층을 각각 노드라고 할 수 있다. OSI 7 계층의 네트워크 계층 ↔ TCP/IP 계층 네트워크 : 프로토콜

  • 헤더 → 데이터의 정보를 나타내는 부분
  • 레이어 2 ⇒ 프레임 / 레이어 3 ⇒ 데이타그램 (패킷) / 레이어 4 ⇒ 세그먼트 (나누다) , 그 사이에 있는걸 데이터라고 한다.
  • 총 데이터를 3번 포장한다 . (세그먼트 → 패킷 → 프레임 ) (캡슐화)
더보기

OSI 참조모델은 각 계층의 독립성을 위해 7개의 계층으로 나뉘어져 있다.

레이어 2 → 맥주소 / 프레임 : 정해져서 나온다.

레이어 3 → IP / 패킷 : 사용자가 변경 할 수 있다.

레이어 4 → 포트 / 세그먼트

동등 계층간의 통신

  • 피어 투 피어 → 상대편 동일 계층의 모듈과 통신하는 프로세스
  • 각 계층에서 통신을 해야할 일들이 헤더에 들어가 있다. 해당 형식으로 계층에서 필요한 정보를 전달한다.

  • IDU ⇒ 인터페이스 (서로 마주본다는 뜻 : 계층과 계층 사이에 존재한다.) Interface Data Unit : 상위계층 → 하위계층 : 서비스를 요청한다. / 하위계층 → 상위계층 : 응답을 전달한다.
  • 3계층 → 데이터가 상위 계층에서 내려온다. (일의 역할은 헤더에 존재) PCI 와 SDU, ICI 를 합치는 작업을 캡슐화라 한다.
    • SDU : Service Data Unit , PCI : Protocol Control Information
    • PDU : Protocol Data Unit
더보기

계층간의 통신에는 IDU (인터페이스 데이타 유닛) 이 전달되고 이는 헤더,트레일러, 데이터, 등의 정보를 전부 포함하는 단위이다.

해당 계층에서는 데이터 (SDU)와 제어정보(PCI) 를 캡슐화 하여 상위 계층으로 다시 IDU를 전달한다.

물리계층

  • 물리적 링크를 설정, 유지, 해제 하기위한 특성을 규정한다.
  • 데이터를 받아서 전송매체로 전송할 수 있도록 변환한다.
  • 비트의 흐름을 전자기 또는 광신호로 변환과 인코딩
  • 데이터 전송방식에서는 단방향, 반이중 (한번에 한쪽 방향으로만 교대로 이뤄진다.) , 전이중 (동시에 양방향으로 이뤄진다.) 방식을 결정한다.
  • 접속 형태 ** : 연결방식에 따라서 형태를 정한다.
    • 노드 링크 계산식은 n(n-1) / 2 가 된다. : 풀 메쉬
    • 트리형
    • 버스형
    • 스타형
    • 링형
    • 메쉬형
  • 전송 매체 : UTP / 광케이블 / 무선 3개만 기억하면 된다
더보기

상위 계층에서 내려온 데이터는 비트열로 받아온 후 물리 계층에서 전송 방식을 결정 후 신호로 (무선,UTP,광케이블) 로 라우터로 전달 그리고 상대 송신측으로 다시 라우터로부터 받아서 작업 반복

데이터링크 계층

  • 노드간의 데이터 전송을 hop-by-hop 으로 수행한다. (노드와 노드가 서로 옆에 존재하는 것을 hop-by-hop 이라 한다.)
  • 헤더를 앞부분에 , 트레일러를 뒷부분에 덧붙인다.
  • 헤더 → 데이터 시작, 주소 등을 포함한다.
  • 트레일러 → 에러 검출 코드
  • 헤더, 데이터, 트레일러를 통틀어 프레임이라고 한다. (PDU)
  • 비트들의 경계를 구분하기 위한 데이터 동기를 제공한다.

  • 주소지정 → 계층에서 사용하는 주소 : 하드웨어 주소, 헤더에 송신지와 수신지의 물리 주소가 포함되어 전송된다.
  • 접근 방식 → 어느 시스템이 어떤 데이터를 전송할 것인지 결정한다.
  • 흐름 제어 → 오버 플로우가 발생하지 않도록 상태를 전달하는 것을 흐름 제어라고 한다.
  • 에러 제어 → 트레일러에서 에러를 체크하는 것
  • 동기화 → 각각의 전송된 프레임의 타이밍을 맞추는 것

데이터링크 동작

  • 회선을 통해서 전송된 데이터는 수신지의 데이터링크 계층에서 헤더와 트레일러를 떼어낸 후 , 네트워크 계층으로 올려보낸다.

 

더보기

데이터링크 계층은 바로 옆 노드에 해당 데이터에 수신자의 물리 주소를 갖는 헤더와 오류 검출 코드인 트레일러를 추가하여 물리 계층으로 보내고,

수신측에서는 헤더와 트레이러를 떼어낸 후 네트워크 계층으로 올려보낸다.

네트워크 계층 특성

  • 네트워크 연결을 관리하고 유지하며 해제하는 기능을 담당한다.
  • 스위칭과 라우팅이라는 두가지 경로배정에 관한 서비스를 제공한다.
  • Host-to-Host 전송을 담당한다.
    • 전송지와 수신지 : Host to Host : IP 주소 : 라우터
    • 양옆의 노드간의 데이터 전송 : hop by hop : 맥주소 : 스위치
  • 라우팅 : IP주소를 보고 주소를 찾아준다.
    • 패킷을 보내기 위한 가장 좋은 경로
  • 스위칭 : 라우터보다 속도가 일반적으로 빠르다. 전화 네트워크가 스위칭의 대표적인 예이다.

더보기

네트워크 계층은 라우터를 이용하여 통신하고 IP주소를 보고 주소를 찾아준다.

전송계층

  • 하위계층으로 이루어진 네트워크 서비스와 상위 계층으로 이루어진 사용자 서비스로 구별된다.
  • 송수신 프로세스 간의 인터페이스 기능과 데이터에 대한 프로세스 단위 Process to Process 전송을 담당한다.
    • 포트 번호로 구분한다.
    • 해당
  • hop by hop → 맥주소 → 프레임
  • host to host → 아이피 → 패킷
  • Process to Process → 포트 → 세그먼트

세션 계층

  • 둘이 연결되있는 상태

표현 계층

  • 사용자의 데이터를 송수신지가 공통으로 이해할 수 있는 데이터 표현 방식을 바꾸는 기능을 담당한다.
  • 아스키코드 → 7비트 ⇒ 128개의 문자를 표현할 수 있다. (한국어 표기 못함)
  • 유니 코드 → 16비트

응용 계층

  • 응용 프로세스들이 상호 간에 유용한 정보교환을 할 수 있도록 하는 창구 역할을 담당한다.
    • 예 : 웹 브라우저
더보기

전송계층 → Process to Process 방식으로 포트 번호로 구별한다.

세션계층 → 세션이라 불리는 가상연결을 확립하고 유지하며 동기화 기능을 제공.

표현계층 → 송수신지가 공통으로 이해할 수 있는 데이터 표현 방식으로 바꾸는 기능.

응용계층 → 응용 프로세스들이 상호간에 유용한 정보 교환을 할 수 있도록 하는 창구 역할을 담당한다.

프로토콜

  • 통신규약
    • 각 노드간의 약속을 프로토콜이라 한다.
    • 상호간에 통신이나 전달방식, 통신방식, 자료형식 및 효과적인 통신을 위한 오류 검출 방식 및 전송속도 등에 대하여 정하고 이를 지켜나가는 것
    • 프로토콜로 무엇을 어떻게 그리고 언제 통신할 것인가를 규정한다.
  • 프로토콜의 구성 요소
    • 구문 Syntax
      • 약속
    • 의미 Semantics
      • syntax 가 있으면 의미가 존재한다.
    • 타이밍

더보기

프로토콜은 네트워크 사이의 약속이다.

Syntax, Semantics, Timing 으로 구성되어있다.

인터네트워킹

  • 각 제조사들이 개발한 네트워크 장비들을 변경하지 않으면서 여러 제조사들의 네트워크를 공동으로 사용하고자 하는 요구
  • 인터네트워크 상에서 서로 다른 제조사들의 시스템간 데이터 통신을 위한 공통의 프로토콜이 필요하다.
  •  개념
    • 서로 떨어져 있는 각각의 네트워크를 연결하여 하나의 네트워크 처럼 사용할 수 있는 기술로 서로 다른 네트워크들을 상호 접속시킴으로써 네트워크의 집합을 형성하거나 광역화 하는 것
  • 요구 사항
    • 네트워크 사이의 하나의 링크를 제공해야 하며, 최소한의 물리 계층과 데이터링크 계층 제어가 필요하다.
    • 네트워크 구조 자체의 변경 없이 네트워크 연결을 제공해야 한다.

더보기

인터네트워킹은 네트워크 구조의 변경 없이 각각의 네트워크를 하나의 네트워크처럼 사용할 수 있도록 하는 기술이다. 최소한의 1,2계층 제어가 필요하다.

인터네트워크 장비

  • 리피터
    • 물리계층에서 동작
    • 동일 LAN 에서 거리의 연장이나 접속 시스템의 수를 증가시키기 위한 장비이다.
    • 전송 신호를 원래 신호로 재생하여 다시 전송하는 역할을 한다.
    • 주소가 없다.
  • 허브
    • 여러 컴퓨터들을 연결하기 위해서 중앙 연결지점을 제공하는 네트워크 장비이다.
    • 리피터의 모음이라고 할 수 있다. (멀티 리피터)
    • 물리계층 (리피터, 허브)
    • 더미 허브
      • 중계 역할 만을 담당하는 장비
    • 스위칭 허브
      • point to point 로 접속, 전이중 방식 통신
      • 충돌이 발생하지 않는다.
    • 스태커블 허브
      • 허브와 허브 사이를 연결하는 장비
      • 전송 속도의 저하가 발생되지 않는다.
  • 브리지
    • 여러개의 LAN을 연결하기 위한 장비
    • 데이터링크 계층에서 동작한다.
    • 충돌 도메인을 줄임과 동시에 전체 네트워크 확장이 가능하다.
    • 네트워크를 분산적으로 구성함으로써 보안성을 높일 수 있다.

  • 스위치
    • 맥주소를 이용하여 동작한다
    • 네트워크 상에 프레임을 고속으로 전송하기 위해 개발되었다.
    • 맥주소를 가지고 포워드 한다.
      • Cut Through 스위치
        • 에러 검사 없이 목적지 포트로 전달 프레임의 대기시간과 전달 시간을 최소화한다.
      • Interim Cut Through 스위치
        • 에러가 발생한 프레임은 여전히 처리하지 못하는 단점이 있다.
      • Store and Forward 스위치
        • 전체 프레임의 버퍼링 과정에서 대기시간이 길다는 단점이 있다.
  • 라우터
    • IP주소로 경로를 찾는 기능을 수행한다.
    • 네트워크 계층 주소인 논리 주소를 기반으로 네트워크 간의 패킷 전달 기능을 수행한다.
  • 게이트웨이
    • 다른 장비들과 다르게 모든 계층에 대해서 동작한다.
    • 서로 다른 프로토콜을 사용하는 네트워크의 프로토콜을 변환한다. (데이터 형식 변화)
    • 네트워크 병목현상을 일으키는 원인이다.
더보기

인터네트워킹 장비에는 리피터, 허브 , 브릿지, 스위치, 라우터, 게이트웨이가 있다.

리피터 → 주소가 없고 전송 신호를 재생하여 다시 재생하는 역할을 하고, 물리적 거리 확장에는 한계가 있다.

허브 → 리피터의 모음이라 할 수 있다. (4개까지 연결 가능, 다른말로 멀티 리피터) 여러 컴퓨터를 연결하기 위한 중앙 연결 지점을 제공하는 네트워크 장비이다.

브릿지 → 데이터링크 계층에서 동작하는 여러개의 LAN을 연결하는 장비이다.

스위치 → 맥주소를 이용하여 동작한다. 프레임을 고속으로 전송하기 위해 개발되었다.

라우터 → IP주소로 경로를 찾는 동작을 수행한다. 패킷전달 기능을 수행

게이트웨이 → 프로토콜 변환 모든 계층에 동작하는 장비

  Comments,     Trackbacks
운영체제 이론 03-21 (정리)

컴퓨터 시스템의 범위

  • 컴퓨터 시스템의 계층
    • 응용프로그램
    • 운영체제
    • 컴퓨터 하드웨어
  • 컴퓨터 시스템 계층 구조의 특징
    • 사용자는 응용프로그램과 GUI / 도구 프로그램 (툴, 유틸리티) 을 통해 컴퓨터를 활용할 수 있다.
    • 하드웨어는 모두 운영체제의 독점적 지배를 받는다.
    • 사용자나 응용 프로그램의 하드웨어에 대한 직접 접근이 불가능하다.
      • 운영체제를 통해서만 접근이 가능하다.
  • 계층 구조로 보는 운영체제의 기능
    • 사용자가 하드웨어에 대해서 알지 못해도 컴퓨터를 사용할 수 있도록 한다.
    • 응용프로그램과 하드웨어 사이를 중계해준다.
      • 응용프로그램 ↔ 하드웨어, 인터페이스

하드웨어 설명

  • CPU (중앙 제어 장치)
    • 프로그램 코드를 해석하여 실행하는 중앙처리 장치
    • 가장 핵심 장치이다.
    • 전원이 공급될 때 작동이 시작되고, 메모리에 적재된 프로그램을 실행한다.
  • 메모리
    • CPU에 의해 실행되는 프로그램 코드와 데이터가 적재되는 공간이다.
    • RAM
    • 프로그램은 실행되기 위해선 반드시 메모리에 적재되어야 한다.
  • 캐시 메모리
    • CPU의 프로그램 실행 속도를 높이기 위해서 CPU와 메모리 사이에 빠른 메모리를 설치하게 되어서 탄생하였다.
    • 온칩 캐시 → CPU 내부에 만들어진 캐시. (대부분 온칩 캐시를 사용한다.)
    • 옵칩 캐시 → CPU 외부에 설치되는 캐시
    • 캐시 메모리가 있는 경우엔 CPU는 캐시 메모리에서만 프로그램을 실행한다.
      • 캐시는 용량이 작기 때문에 현재 실행할 코드와 데이터의 극히 일부분 만 저장한다.
  • 버스
    • 하드웨어들이 데이터를 주고받기 위해 0과 1의 디지털 신호가 지나가는 여러 가닥의 선을 다발로 묶어 부르는 용어이다.
      • 컴퓨터의 버스 → 도로, 컴퓨터의 데이터 → 자동차
    • 버스의 종류
      • 주소 버스 → 주소 신호가 지나다니는 버스
      • 데이터 버스 → 데이터 신호가 지나다니는 버스
      • 제어 버스 → 제어 신호가 지나다니는 버스
    • 주소
      • 레지스터에 대한 번지수
      • 0번지에서 시작하는 양수이다.
      • 주소 버스는 주소 값이 전달되는 여러 선의 다발이다.
      • CPU는 메모리나 입출력 장치에 값을 쓰거나 읽을때 반드시 주소를 발생시킨다.
  • 목적에 따라서 버스를 구분한다.
    • 시스템 버스
      • CPU, 캐시 메모리, 메모리 등 빠른 하드웨어 사이에 데이터를 전송한다.
      • 고속도로에 비유된다.
    • 입출력 버스
      • 상대적으로 느린 입출력 장치들로부터 입출력 데이터를 전송한다.
      • 일반 도로 에 비유된다.
  • IO 컨트롤러 & 컨트롤 서킷
    • 입출력 장치들을 제어하기 위한 여러 하드웨어이다.
      • 입출력 장치에게 명령 하달 → 메모리와 입출력 장치 사이에 혹은 CPU와 입출력 장치 사이에 데이터를 전달 중계한다.
      • DMAC, 인터럽트 제어장치 등을 포함한다.

 

더보기

컴퓨터는 응용소프트웨어, 시스템소프트웨어, 하드웨어 이렇게 볼 수 있다.

운영체제는 소프트웨어와 하드웨어 사이의 중계를 하고, 하드웨어에 대한 독점적인 지배 권한을 갖는다.

사용자는 운영체제를 통해 하드웨어에 대해 몰라도 컴퓨터를 사용 할 수 있다.

하드웨어 → CPU, 메모리, 입출력장치 정도 (폰노이만구조 1940년대)

버스 → 주소버스, 데이터 버스, 제어버스, CPU는 입출력 장치에 값을 쓰거나 읽을때 반드시 주소를 발생시킨다.

시스템 버스와 입출력 버스로 목적에 따라 버스를 구분한다.

I / O 컨트롤러는 입력 및 출력 장치 인 다양한 주변 장치를 연결하고 제어하는 데 도움이 된다.

 

 

  • CPU
    • 능동적 소자이다. 메모리 액세스 시 주소를 발생시킨다. (주소번지에 있는 명령을 가져올 수 있도록 처리를 한다.)
    • 32비트 CPU, 32비트 운영체제, 32비트 컴퓨터란 ?
      • CPU에 32개의 주소선이 존재하는 것
        • CPU의 액세스 범위 : 2^32개의 서로 다른 주소
        • CPU가 최대 액세스 할 수 있는 메모리의 크기가 4GB가 된다.
        • 한 번지의 공간이 1바이트 이므로, 2^32 개의 주소 = 2^32 바이트 = 4GB
        • 32비트 CPU를 가진 컴퓨터는 4GB를 넘어선 영역은 사용할 수 없다.
      • CPU에 입출력되는 32개의 데이터 선이 존재한다.
        • 한번에 32비트 읽고 쓰기가 가능하다.
  • CPU 명령
    • CPU가 해석하고 실행할 수 있도록 하는 기계명령
      • C언어나 자바의 프로그램 소스 코드와는 다르다.
      • CPU를 설계하는 기업이 명령어들, 명령어 개수, 형태 등을 결정한다.
      • CPU의 명령 개수는 수십개에서 수백개가 된다.
      • CPU마다 명령 이름, 기계어 코드, 크기, 개수 등이 다르다.
      • CPU 사이에 명령들의 호환성은 없다.
        • 컴파일된 코드는 CPU사이에 호환성이 없다.
  • CPU 레지스터
    • PC (Program Counter) → 다음에 실행할 명령의 메모리 주소를 저장한다.
    • IR (Instruction Register) → 현재 실행하기 위해 메모리로부터 읽어온 명령을 저장한다.
    • SP (Stack Pointer) → 스택의 톱 메모리 주소를 저장한다.
    • 데이터 레지스터 (data registers) → 연산에 사용되거나 사용될 데이터들을 저장한다.
    • 상태 레지스터 (status register) → CPU의 상태 정보나 인터럽트 금지 등의 제어 정보를 저장한다.
    • 기타 레지스터 → 페이지 테이블이 저장된 메모리 주소를 가리키는 레지스터 등
  • CPU 명령 사이클 → CPU가 하나의 명령을 실행하는 과정 / CPU는 전원이 켜진 후 단순하게 명령 사이클을 반복한다.

 

스택은 어디에 있는가?

  • 프로그램이 실행되기 위해 운영체제에 의해 할당되는 4공간
    • 코드 공간 → 프로그램 코드를 적재한다.
      • 운영체제도 코드로 이뤄져있다.
    • 데이터 공간 → 전역 변수들이 적재되는 공간
    • 힙 공간 → 프로그램에서 동적 할당받는 공간
    • 스택 공간 → 함수가 호출될 때 매개변수,지역변수 등을 저장한다.
  • 스택
    • 메모리의 일부를 스택으로 사용하도록 할당된 공간이다.
      • 물리적으로는 존재하지 않는다.
    • 운영체제는 각 프로그램에게 스택 공간을 할당시켜준다.
    • CPU의 SP 레지스터는 현재 CPU가 실행중인 프로그램의 스택 꼭대기에 주소를 가리킨다.
    • 스텍에 저장되는 내용 (함수일 수도 있지만 프로그램일 수도 있다.)
      • 함수의 지역변수 (함수 안)
      • 함수가 호출될 때 전달받은 매개변수 값들 (매개인자)
      • 함수가 실행된 후 돌아갈 주소
      • 함수가 의도적으로 저장해 두기 위한 값

 

 

 

더보기

CPU → 능동적 소자이다. 메모리 엑세스 시에 주소를 발생한다.

예 : 32비트 , 32비트 운영체제 등 → 32개의 주소선이 CPU에 있다는 뜻 → 액세스 할 수 있는 최대 메모리 크기는 4GB

CPU 명령은 기계명령이다.

CPU 레지스터 → PC , IR , SP , 데이터레지스터들, 상태 레지스터, 기타 여러 레지스터

명령 사이클 → CPU가 하나의 명령을 실행하는 과정. CPU는 전원이 켜진 후 명령 사이클 반복

운영체제 4공간 → 코드 공간: 코드저장 , 데이터 공간 : 변수 저장, 힙공간, 스택공간

컨텍스트 **

  • 한 프로그램이 실행 중인 일체의 상황 혹은 상황 정보
    • 메모리
      • 프로그램 코드와 데이터, 스택, 동적할당 받아 저장한 값
    • CPU 레지스터들의 값
      • PC ← 코드의 주소
      • SP ← 스택의 주소
      • 다른 레지스터는 이전의 실행결과나 현재 실행에 사용되는 데이터들
  • 축소 정의
    • 현재 CPU에 들어있는 레지스터의 값들 (메모리에 저장된 상황 정보는 그대로 있기 때문)

컨텍스트 스위칭 **

  • 발생
    • CPU가 현재 프로그램의 실행을 중지하고 다른 프로그램을 실행할 때 발생한다.
  • 과정
    • 실행중인 프로그램의 컨텍스트 → 메모리에 저장 → 새로 실행시킬 프로그램의 저장된 컨텍스트 (CPU레지스터들의 값) → CPU

 

더보기

컨텍스트 : CPU에 저장된 레지스터들의 값

컨텍스트 스위칭 : 실행중인 프로그램의 컨텍스트를 메모리에 저장 후 실행할 프로그램의 컨텍스트를 CPU 에 복귀

멀티코어 : CPU에 프로세서 두개 , 2개 프로그램 동시 실행

  Comments,     Trackbacks
정보통신 개론 03-20 (정리) 정보통신 시스템의 구성

정보통신 시스템의 구성

  • 정보전송 시스템
    • 데이터를 전송하는 역할
    • 데이터를 얻어내는 곳 → 단말장치 : 정보의 입력과 수신
    • 데이터를 보내는 구간 → 회선 (정보전송 회선 / 신호 변환장치와 통신 회선) : 변조와 복조 (예: 모뎀)
    • 정상적인 동장이 되기 위해서 제어해주는 장치 → 통신 제어장치 : 컴퓨터 ↔ 모뎀 사이의 데이터를 처리하기 좋은 형식으로 변환
  • 정보처리 시스템 (연산해주고 가공해주는 곳)
    • 데이터 가공 및 처리하여 보관하는 역할 :
    • 컴퓨터와 주변기기로 구성 (가장 핵심적인것은 중앙처리장치, 기억장치, 입출력 장치, 임베디드 : 필요한것만 빼와서 사용하는 시스템)
      • 중앙처리장치 → 컴퓨터에서 입력되는 데이터를 가공, 처리, 축적, 수정, 변경, 추가
      • 기억장치와 입출력 장치 → 컴퓨터에서 데이터를 저장하는 저장 장치입출력 장치로 구성
더보기

정보통신 시스템은 전송처리로 나뉘어진다.

전송 → 단말장치 , 전송 회선, 제어장치, 변환장치 (모뎀)

처리 → 중앙처리장치, 기억장치와 입출력장치

정보통신 시스템의 분류

  • 구조별 분류
    • 정보전송 시스템 : 정보전송 하드웨어, 정보전송 소프트웨어
    • 정보처리 시스템 : 정보처리 하드웨어, 정보처리 소프트웨어
  • 우리가 쓰이는 형식은 오프라인 처리 / 온라인 처리 / 즉시 처리/ 배치처리 로 분류된다.
    • 정보전송 시스템 :
      • 오프라인 → 단순 데이터를 들고 가는것과 비슷
      • 배치 처리 → 일들을 루틴으로 처리시킨다. 데이터를 모아서 필요한 시점에 처리한다 (즉시 처리도 가능하다.)
      • 온라인 → 연결되어 있는 상태에서 처리
      • 즉시 처리
    • 정보처리 시스템 :
      • 즉시처리
      • 온라인 / 배치 처리

 

 

통신 시스템의 하드웨어

  • 단말 장치 ( 데이터를 입 / 출력 하는데 사용되는 장치 )
    • 컴퓨터와 연결되는 모든 주변 장치
    • 처리는 안에서 하고 내보내는것을 담당한다
  • 공통적으로 ‘제어’ 라는 단어가 들어간다.
  • 단말장치의 종류와 기능
    • 점차 지능화 되어가고 있으며 특수 용도에 맞게 발전하고 있다.

일반적으론 단말장치와 범용 단말장치로 분류된다.

보통 용도에 따라 분류된다.

통신 시스템의 하드웨어

  • 단말 장치 ( 데이터를 입 / 출력 하는데 사용되는 장치 )
    • 컴퓨터와 연결되는 모든 주변 장치
    • 처리는 안에서 하고 내보내는것을 담당한다
  • 공통적으로 ‘제어’ 라는 단어가 들어간다.
  • 단말장치의 종류와 기능
    • 점차 지능화 되어가고 있으며 특수 용도에 맞게 발전하고 있다.

일반적으론 단말장치와 범용 단말장치로 분류된다.

보통 용도에 따라 분류된다.

통신 시스템의 하드웨어

  • 단말 장치 ( 데이터를 입 / 출력 하는데 사용되는 장치 )
    • 컴퓨터와 연결되는 모든 주변 장치
    • 처리는 안에서 하고 내보내는것을 담당한다
  • 공통적으로 ‘제어’ 라는 단어가 들어간다.
  • 단말장치의 종류와 기능
    • 점차 지능화 되어가고 있으며 특수 용도에 맞게 발전하고 있다.

일반적으론 단말장치와 범용 단말장치로 분류된다.

더보기

전송 시스템 → 오프라인 / 배치 처리, 온라인 즉시 처리

처리 시스템 → 즉시 처리, 온라인 / 배치 처리

즉시 ⇒ 바로 처리

배치 ⇒ 모아서 처리

단말장치 → 데이터 입출력 장치

단말장치는 보통 용도에 따라 분류되고, 범용 단말 장치단말 장치로 분류된다.

신호 변환 장치는 정보를 전기적 신호로 변환

DCE 에는 모뎀과 인터페이스 카드가 포함 / 네트워크로 연결되는 물리적 수단 (단말 장치를 영어로 표현 한 것 같은 느낌이 있다.)

 

  • 신호 변환장치
    • 송신자 의 정보를 전기적 신호 로 변환한 후 전송매체(통신회선) 을 거쳐 전송된다.
    • 전기적 신호신호 변환장치를 이용해 원래의 정보로 변환된다.
    • DCE : 단말의 역할을 한다. → 신호변환, 전송 신호의 동기 제어 송수신 확인 , 전송 조작 절차 (프로토콜) 의 제어 등을 담당

축약해서 송신자 ↔ 수신자 사이에서 정보 → 신호변환 장치 → 전기신호 로 변환된다. (전기신호가 들어갈땐 정보로 출력)

  • 신호는 아날로그 신호와 디지털 신호로 나뉘어진다. **중요
  • 한 주기로 본다. (일정한 시간)
  • 아날로그
    • 주기적인 신호들이 합쳐지면 해당 그래프처럼 볼 수 있다.
    • 비슷하다 (Analogous) 에서 파생되었다.
    • 연속적으로 변하는 신호
    • 자연스럽다.
    • 음성, 음악, 텔레비전 영상, 그림, 사진
      • 단순 삐~ 하는 소리 → 순음 (예시 아날로그 신호의 모습을 하고 있다.)
    • 전압값이 여러개이다.
  • 디지털
    • 손가락에서 유래되었다. (Digit)
    • 인공적이다.
    • 이산적인 신호 (신호를 일정한 시간별로 잘라서 샘플링한다. (샘플링 주기라고 한다.) / 크기별로 끊는것은 양자화 라고 한다. (Quantization) )
    • 전압 값이 정해져있다.
    • 단말장치, 컴퓨터, 팩스
  • 디지털 → 아날로그로의 변환을 세밀하게 할 때는 두가지 방법이 있다.
    • 주기를 더 세밀하게 나눈다. (구간이 짧아졌기 때문에 데이터가 더 늘어난다.) → 샘플링
    • 크기를 더 세밀하게 나눈다. → 양자화 (아무리 세분화 해도 정확한 값을 얻어낼 순 없다.)
    • X : 주기 Y : 크기 (진폭)
  • 아날로그 → 디지털 → 정확한 아날로그 : 할 수 없다. (최대한 비슷하게는 가능하다.)
  • 정보의 가치에 따라서 비트를 정한다 . (1비트 : 2V)

불규칙한 아날로그 신호와 규칙적인 디지털 신호

 

  • 신호 변환장치를 이용한 정보전송 과정
    • 변조와 복조 기능을 수행하는 장치
    • 일반적으로 병렬-직렬 처리된다. (동시에 들어오니 묶어서 하나의 처리 과정을 거쳐서 내보낸다. )
    • 나갈때에는 아날로그 신호로 내보낸다.
    • 정보전송 과정
      • 변조 과정을 거친 후 송신 : 아날로그→디지털 → 아날로그
      • 복조 과정을 거쳐 수신부에 디지털 신호로 입력 : 아날로그 → 디지털 → 아날로그
    • 왜 디지털로 관리할까 ? ** 중요
      • 각각의 전송로 상에서 기계적인 노이즈가 존재해 신호 감쇄가 일어난다.
      • 따라서 중간에 노이즈를 필터링을 하고 신호를 키워주는 작업이 필요하다.
      • 아날로그 같은 경우엔 최종적으로 감쇄가 많이 되어 도착 할 수있다.
      • 디지털로 관리할 시에 디지털 신호는 정확히 0과 1로 이루어져 있기 때문에 손실이 거의 없다.
      • 디지털 신호 같은 경우엔 깨지게 되면 블록 단위로 깨지며, 단순 1비트가 깨져도 티가 안난다.
      • 신호 변환장치
        • 송신자 의 정보를 전기적 신호 로 변환한 후 전송매체(통신회선) 을 거쳐 전송된다.
        • 전기적 신호신호 변환장치를 이용해 원래의 정보로 변환된다.
        • DCE : 단말의 역할을 한다. → 신호변환, 전송 신호의 동기 제어 송수신 확인 , 전송 조작 절차 (프로토콜) 의 제어 등을 담당
          • 신호는 아날로그 신호와 디지털 신호로 나뉘어진다. **중요
          • 한 주기로 본다. (일정한 시간)
          • 아날로그
            • 주기적인 신호들이 합쳐지면 해당 그래프처럼 볼 수 있다.
            • 비슷하다 (Analogous) 에서 파생되었다.
            • 연속적으로 변하는 신호
            • 자연스럽다.
            • 음성, 음악, 텔레비전 영상, 그림, 사진
              • 단순 삐~ 하는 소리 → 순음 (예시 아날로그 신호의 모습을 하고 있다.)
            • 전압값이 여러개이다.
          • 디지털
            • 손가락에서 유래되었다. (Digit)
            • 인공적이다.
            • 이산적인 신호 (신호를 일정한 시간별로 잘라서 샘플링한다. (샘플링 주기라고 한다.) / 크기별로 끊는것은 양자화 라고 한다. (Quantization) )
            • 전압 값이 정해져있다.
            • 단말장치, 컴퓨터, 팩스
          • 디지털 → 아날로그로의 변환을 세밀하게 할 때는 두가지 방법이 있다.
            • 주기를 더 세밀하게 나눈다. (구간이 짧아졌기 때문에 데이터가 더 늘어난다.) → 샘플링
            • 크기를 더 세밀하게 나눈다. → 양자화 (아무리 세분화 해도 정확한 값을 얻어낼 순 없다.)
            • X : 주기 Y : 크기 (진폭)
          • 아날로그 → 디지털 → 정확한 아날로그 : 할 수 없다. (최대한 비슷하게는 가능하다.)
          • 정보의 가치에 따라서 비트를 정한다 . (1비트 : 2V)

          • 신호 변환장치를 이용한 정보전송 과정
            • 변조와 복조 기능을 수행하는 장치
            • 일반적으로 병렬-직렬 처리된다. (동시에 들어오니 묶어서 하나의 처리 과정을 거쳐서 내보낸다. )
            • 나갈때에는 아날로그 신호로 내보낸다.
            • 정보전송 과정
              • 변조 과정을 거친 후 송신 : 아날로그→디지털 → 아날로그
              • 복조 과정을 거쳐 수신부에 디지털 신호로 입력 : 아날로그 → 디지털 → 아날로그
            • 왜 디지털로 관리할까 ? ** 중요
              • 각각의 전송로 상에서 기계적인 노이즈가 존재해 신호 감쇄가 일어난다.
              • 따라서 중간에 노이즈를 필터링을 하고 신호를 키워주는 작업이 필요하다.
              • 아날로그 같은 경우엔 최종적으로 감쇄가 많이 되어 도착 할 수있다.
              • 디지털로 관리할 시에 디지털 신호는 정확히 0과 1로 이루어져 있기 때문에 손실이 거의 없다.
              • 디지털 신호 같은 경우엔 깨지게 되면 블록 단위로 깨지며, 단순 1비트가 깨져도 티가 안난다.
더보기

신호는 아날로그 (곡선) 디지털 (0,1) 로 나뉘어져 있다.

신호 변환장치는 변조복조 기능을 수행하고 수신부에 디지털 신호를 전달한다.

디지털 신호로 관리하는 이유는 아날로그 신호는 감쇄가 많이 되어 도착 할 수 있기 때문에, 0과 1로만 이루어져 있는 디지털 신호는 손실이 거의 없고, 깨지게 되면 블록 단위로 깨진다.

 

 

모뎀

  • 예 : 랜카드 / 라우터는 공유기
  • 모듈레이터와 DE모듈레이터의 합성어이다.
  • 디지털 신호를 아날로그 신호로 변환하여 전송시키는 역할을 한다.
  • 송신부
    • 데이터 부호화기, 변조기, 스크램블러, 주파수 체배기
  • 수신부
    • 동화기 , 대역 제한 여파기(검증하고 출력한다 : 필터링 ), 자동 이득 조절기(신호에 대한 크기를 조절시킨다.) , 복조기 , 데이터 복호화기, 스크램블러(암호화) 의 역기능인 디스크램블러
      • 스크램블러 ⇒ 디지털 신호의 순서를 재배치 후 정해둔 순서로 통신 (스크램블 된 신호는 깨져도 원복이 가능하다.)

모뎀끼리는 아날로그 신호를 송수신 하고 각각의 송수신 장비에는 디지털 신호를 송수신한다.

  • 아날로그에서는 디지털 신호 데이터를 송수신 할 수 없어 주변 노이즈에 강한 대응력을 보이는 전압으로 변조한다.
    • 단순 전화로 예를 들자면 통화를 하면서 발생하는 열이 노이즈를 발생시킨다.

 

 

 

디지털 서비스 유닛 (DSU)

  • 디지털망에 사용하는 회선 종단 장치 (DCE)
  • 디지털 회선을 이용해 디지털 데이터나 신호를 먼 곳까지 안전하게 전송할 수 있도록 단극성 신호를 양극성 신호로 변환한다.
    • 각 데이터의 타이밍을 맞춰준다.

 

더보기

모뎀 → 랜카드와 비슷 (모뎀이 없으면 인터넷에 연결도 못함) / 신호 변환 장치, 송신부 수신부 존재

아날로그 → 디지털 신호 일때는 노이즈에 강한 대응력을 보이는 전압으로 변조

라우터 → 공유기

DCE (데이터 커뮤니케이션 이큅먼트)→ 단극성 신호를 양극성 신호로 변환한다. (데이터의 타이밍을 맞춰준다.)

통신 회선

  • 데이터를 전송하는 통로
    • 전송 선로는 유선과 무선으로 구분된다.
  • 통신기기 사이를 연결하는 역할을 한다.
  • 유선 선로
    • 꼬임선
      • 구리선 두 가닥을 균일하게 꼬아서 여러 다발로 묶어 보호용 피복선을 입힌 케이블
      • 트위스티드 페어 케이블이라고도 한다.
      • 간섭 현상을 줄이려고 전선을 꼬아서 사용한다.
  • 동축 케이블
    • 케이블 방송에서 많이 사용된다.
    • 내부에 있는 단열 구리선과 외부 도체로 구성된다.
    • 높은 주파수에서 도선의 실효 저항이 상승하는 트위스티드 페어 케이블의 결점을 보완한 것이다.
    • 초창기때 대부분 동축 케이블을 사용했다.
    • 수십~500Mbps 의 전송 속도를 갖고있다.
    • 아날로그용으로 많이 사용된다.
    • 트렌드가 동축 케이블 → UTP / 광케이블 로 바뀌고 있다.

 

  • ,광섬유 케이블 (빛)
    • 지름의 굵기가 0.1mm 정도인 석영을 케이블 안에 여러 가닥 넣어서 레이저광의 전반사 현상을 이용해 데이터를 전송하는 원통형 선로
    • 장점
      • 고속이면서 감쇄 영향도 상대적으로 아주 낮다.
      • 케이블이 작고 가벼우며 오류 발생률도 매우 낮다.
    • 단점
      • 가격이 비싸다.
      • 정교한 납땜 기술이 필요하다.
  • 무선 선로
    • 지형 기후에 따라 전파 방법이 다르다.
      • 대기 등에서 전자기파를 이용하여 데이터를 전송하는 비유도체
      • 마이크로파와 라디오파로 분류된다.
    • 마이크로파
      • 강으로 분리된 지역에 유선선로를 설치할 때 발생하는 어려움과 높은 비용이 드는 문제를 해결해준다.
      • 위성 마이크로파
        • 지상에서 상공에 위성을 띄워 놓고 지상의 여러 송수신국을 서로 연결해준다.
        • 상호 간의 간섭을 방지하기 위하여 업링크 주파수는 다운링크 주파수보다 높은 대역을 사용한다.
        • 중계역할 밖에 안한다. (받은 것을 보내주는 역할만 한다.)
      • 정지궤도 위성
        • 고정된 것처럼 관측되는 통신 위성
      • 지상 마이크로파
        • 극초단파 전송 또는 마이크로파 라디오라고도 한다.
        • 장거리 통신에 더 적합하다.
        • 주로 높은 지대에 설치하기 때문에 중계소가 필요하다.
    • 라디오파
      • 방향성이 없다. → 주로 방송용으로 이용한다.
      • 안테나를 정해진 위치에 설치하지 않아도 된다.
      • 디지털 통신에서는 전송률이 높지 않다는 단점이 있다.
  • 이동 통신
    • 이동체 상호 간에 일어나는 무선 통신을 의미한다.
    • 이동국 , 기지국 , 교환국으로 구성된다.
      • 이동국 → 통신 단말기
      • 기지국 → 이동국과 교환국을 연결하는 기능을 한다.
      • 교환국 → 이동통신망과 일반 공중망을 연결하는 기능을 한다.

 

더보기

통신회선은 무선과 유선으로 분리된다.

유선 → UTP (트위스티드 페어 케이블) , 동축 케이블 (트위스티드 페어 케이블의 결함을 보완 ,구리/ 아날로그에 적합 , 요즘엔 UTP / 광케이블 사용하는 추세), 광케이블 (레이저광의 전반사 , 석영 / 현재는 해저 광케이블 주로 사용 )

무선 → 공기(마이크로파 : 위성, 지상 마이크로파 / 라디오파 )

  Comments,     Trackbacks
정보보안개론 03-15 (정리) 보안공격 사례와 시스템 보안 관리

랜섬웨어 사고의 재구성

  • 2017년 6월 10일 국내 호스팅 업체가 보안 공격으로 서비스가 중지되는 사고가 발생하였다.
    • 150여 대의 서버가 랜섬웨어 라는 악성코드 공격으로 서비스가 중지되었다.
    • 고객사 중요 파일들이 암호화 랜섬웨어 공격으로 서비스 장애 공지가 되었다.
  • 랜섬웨어 공격이란
    • 일반파일을 암호화시켜 뒤에 새로운 확장자를 추가함
  • 최초의 악성코드 설치는 APT 공격에 의한 것으로 추정된다. (Advanced Persistent Threats, 지능형 지속 위협)
    • 하나의 타겟을 목표로 오랜 시간 동안 흔적을 남기지 않고 정보를 수집해 공격한다.
  • APT 보안 공격
    • 숨바꼭질형 보안 공격으로도 불린다.
  • 랜섬웨어 공격 예제
    • 관리자 PC 공격 및 계정 정보 탈취
      • 악성코드를 설치하여 관리자 PC에서 내부 정보를 수집한다.
    • 게이트웨이 서버를 통해 서버 접속 및 악성코드 설치
      • 백업 서버에도 랜섬웨어를 설치한다.
    • 랜섬웨어를 실행한다.
    • APT 공격에 의한 것으로 추정된다.
      • 오랜 잠복기간을 거쳐 정보를 수집 하기 때문에 어느 순간에 공격을 당하게 되었는지 확인하기 쉽지 않다.

개인정보 유출 사고 예제

  • 업데이트 서버 해킹
    • 보안 공격자가 업데이트 파일을 서버에서 본인이 만든 업데이트 파일로 교체
  • 감염된 업데이트 파일에 의한 좀비 PC 생성
    • 공격대상으로 삼은 기업만 대상으로 하여 데이터베이스 관리자 ID와 비밀번호까지 탈취
  • 좀비 PC를 통하여 개인정보 유출

보안 공격의 이해 및 필요 지식

  • 보안 관련 선수 지식
    • 운영체제 (OS) : 공격을 하려고 하거나 어떤 공격에 대한 것을 탐지를 하려고 할때 운영체제를 모르면 깊이가 없다. 내부적으로 하드웨어를 컨트롤 하는것 등 중요 부분 을 담당하기 때문
    • 네트워크 : 네트워크를 타고 들어와서 공격하는 경우가 있기 때문에 공격의 이해를 위해 필요하다.
    • 서버 : 해당 서버가 어떤 서비스를 제공하고 어떤 방식에 의해 동작되는지 알아야 공격으로부터 수비하는 방법을 알 수 있다. (리눅스에 대해서 알고있어야 한다.)
    • 프로그래밍 : 해킹 프로그램에 대응하려면 프로그래밍에 대한 기본적인 지식이 필요하다.

보안 모델과 솔루션

  • 보안의 3대 요소
    • 기밀성
      • 정보를 오직 인가된 사용자에게만 허가한다.
    • 무결성
      • 허락되지 않은 자가 정보를 수정하거나 위/변조 할 수 없도록 하는것 (정일완)
        • 정확성 → 틀린 내용 X
        • 완전성 → 내용중에 빠진것이 있으면 X
        • 일관성 → 다른 정보와 일치해야한다.
    • 가용성
      • 접근 권한이 있으면 정보에 정해진 시간 내에 접근할 수 있음을 보장
  • 보안성 강화
    • 기술적 보호 조치 (보안 솔루션)
    • 보안 정책에 의한 절차적 보안 조치도 필요하다. (직원 교육)
    • 보안 정책과 기준을 기반으로 적합한 보안 제품을 도입한다.
  • 정리보안 솔루션 구축, 직원 교육으로 절차적 보안 조치, 보안 제품 도입
  • 보안의 3대 요소로 기무가 (기밀성 무결성(정일완) 가용성)

시스템 보안

  • 최근의 많은 보안 사고들은 네트워크를 통해 외부에서 침입한 공격에 의해 발생하고있다.
    • 제로데이 공격과 같은 기존에 알려지지 않은 최신 공격 기법을 사용한 경우에는 어쩔 수 없지만**, 많은 보안 사고들은 미리 준비를 하면 막을 수 있는 경우가 대부분**이다.
      • 정상적인 패치가 나오기 전 까진 무방비 상태
      • 아직 알려지지 않은 컴퓨터 소프트웨어 취약점을 의미한다.
        • 취약점이 발견되면 제작자나 개발자가 취약점을 보완하는 패치를 배포하고 사용자는 이를 다운받아 대응한다.
        • 제로데이 공격은 공격의 신속성을 의미하는 것 (대처 방법이 없다.)

시스템

  • 서버
    • 서비스를 제공하는 시스템
    • 웹 서버 프로그램을 설치하면 → 웹서버
    • DBMS 서버 프로그램을 설치하면 DB 서버
    • 대표적인 서버 운영체제 → 윈도우 / 유닉스 (금융쪽에서 많이 사용한다.) / 리눅스
  • 정보 시스템 개요
    • 데이터를 수집 저장 가공 배분하는 시스템으로 정의한다.
    • 하드웨어 소프트웨어 사람 데이터 프로세스 로 구성된다.
  • 시스템 : 보안 공격 대상이 될 수 있는 단위
    • 대표적인 시스템 → 리눅스 / 윈도우 / 유닉스 (서버용 운영체제)
  • 서버
    • 서비스를 제공하는 시스템
    • 서버용 운영체제가 설치된 컴퓨터
      • 웹서버 프로그램 → 웹서버
      • DBMS 서버 프로그램 → DB서버

  • 시스템의 보안성을 평가하는 4가지 항목 (각각의 항목들이 제대로 보안성을 갖추고 있는지가 안정성을 평가하는 측도가 된다.)
    • 계정관리
      • 계정 → 허가된 사용자인지 검증을 위한 정보 (신분증)
      • 관리자 계정 → 엄격한 관리가 필요하다. (전체적으로 컴퓨터를 관리할 수 있는 권한이 있는 계정)
        • 탈취당하면 상당히 심각한 문제가 발생한다.
      • 가능한 관리자 계정의 개수는 줄여라
        • 관리자 계정에 대한 보안 위험 범위가 확대된다. (문이 많은 것;;;)
        • 보안상 관리 비용 증가 (문 고장나면 어쩔겨)
        • 시스템 및 보안 → 관리 도구 → 컴퓨터 관리에서 계정 관리
      • 관리자 아이디를 변경하라
        • 무차별 공격 (브루트 포스) 대비
        • 시스템 및 보안 → 관리 도구 → 로컬 보안 정책
    • 암호 관리
      • 보안 공격자는 사람들이 쉽게 사용하는 암호들을 미리 관리한 암호 사전이 있다. (밥먹듯이 해킹하는데 없으면 이상;;)
      • 좋은 암호가 가지는 특징
        • 길이가 길어야 한다.
        • 영어 숫자 특수문자 등을 조합
        • 로컬 보안 정책 설정 → 비밀번호의 보안 강도를 강제적으로 설정해준다.
    • 서비스 관리
      • 공유 폴더에 대한 익명 사용자의 접근을 막아라.
        • 컴퓨터 관리 → 공유 폴터
        • 인가 되지 않은 익명의 사용자가 네트워크를 통하여 중요한 문서에 접근할 수 있다면 보안적으로 심각한 문제가 발생할 수 있다. (우리집에 쌩판 남 들어오면 안됨;;)
      • 불필요한 서비스를 제거하라
        • 보안 가이드에서 권고되는 중지 대상 서비스를 제거

      • FTP 서비스를 가능한 사용하지 않거나 접근 제어를 엄격하게 관리한다.
        • FTP
          • 서버 ↔ 클라이언트 사이의 파일 전송을 위한 통신 프로토콜 중 하나
          • 윈도우 서버 운영체제에서는 FTP 서비스를 제공한다.
          • www 방식보다 파일을 빠른 속도로 한꺼번에 주고 받을 수 있다.
          • 사진, 음악, 동영상 등의 멀티미디어 콘텐츠는 내려받기가 완료 후 다음에 확인이 가능하다.
        • 익명 인증 금지
        • Everyone 계정 제거
        • 접근 제어 설정
          • 접속 가능한 IP주소 대역을 설정한다.
        • SFTP 가 권장된다.
          • SSL 암호화 통신 프로토콜을 사용한다.
          • 스니핑을 통한 유출 가능성이 낮다.
          • SSH 개요
            • 안전하게 통신할 수 있는 기능을 제공하는 응용 프로그램 또는 프로토콜
          • SSL
            • 네트워크에 통신 보안을 제공하기 위해 설계된 암호 규약
    • 패치 관리
      • 소프트웨어의 사소한 기능 개선 또는 버그나 오류 등을 수정하기 위해 개선한 프로그램
      • 핫픽스와 서비스 팩
        • 핫픽스 → 버그 수정이나 보안 취약점 보완을 위해 긴급히 배보하는 패치 (so hot..)
        • 하나의 핫픽스는 하나의 취약점 혹은 버그만 다룬다.
      • 서비스 팩
        • 여러개의 패치 및 개선 사항이 모여있는 프로그램
        • 운영체제의 핵심인 커널이 변경되기도 한다.
        • 패치를 따로 설치하는 것보다 서비스 팩을 설치하는 것을 권장한다.
    • 로그 관리
      • 로그 : 책임 추적성을 가능하게 하는 기반 자료
        • 책임 추적성 → 사용자의 행위에 대해 추적이 가능하다. (발자취..)

랜섬웨어 사고의 재구성

  • 2017년 6월 10일 국내 호스팅 업체가 보안 공격으로 서비스가 중지되는 사고가 발생하였다.
    • 150여 대의 서버가 랜섬웨어 라는 악성코드 공격으로 서비스가 중지되었다.
    • 고객사 중요 파일들이 암호화 랜섬웨어 공격으로 서비스 장애 공지가 되었다.
  • 랜섬웨어 공격이란
    • 일반파일을 암호화시켜 뒤에 새로운 확장자를 추가함
  • 최초의 악성코드 설치는 APT 공격에 의한 것으로 추정된다. (Advanced Persistent Threats, 지능형 지속 위협)
    • 하나의 타겟을 목표로 오랜 시간 동안 흔적을 남기지 않고 정보를 수집해 공격한다.
  • APT 보안 공격
    • 숨바꼭질형 보안 공격으로도 불린다.
  • 랜섬웨어 공격 예제
    • 관리자 PC 공격 및 계정 정보 탈취
      • 악성코드를 설치하여 관리자 PC에서 내부 정보를 수집한다.
    • 게이트웨이 서버를 통해 서버 접속 및 악성코드 설치
      • 백업 서버에도 랜섬웨어를 설치한다.
    • 랜섬웨어를 실행한다.
    • APT 공격에 의한 것으로 추정된다.
      • 오랜 잠복기간을 거쳐 정보를 수집 하기 때문에 어느 순간에 공격을 당하게 되었는지 확인하기 쉽지 않다.

개인정보 유출 사고 예제

  • 업데이트 서버 해킹
    • 보안 공격자가 업데이트 파일을 서버에서 본인이 만든 업데이트 파일로 교체
  • 감염된 업데이트 파일에 의한 좀비 PC 생성
    • 공격대상으로 삼은 기업만 대상으로 하여 데이터베이스 관리자 ID와 비밀번호까지 탈취
  • 좀비 PC를 통하여 개인정보 유출

보안 공격의 이해 및 필요 지식

  • 보안 관련 선수 지식
    • 운영체제 (OS) : 공격을 하려고 하거나 어떤 공격에 대한 것을 탐지를 하려고 할때 운영체제를 모르면 깊이가 없다. 내부적으로 하드웨어를 컨트롤 하는것 등 중요 부분 을 담당하기 때문
    • 네트워크 : 네트워크를 타고 들어와서 공격하는 경우가 있기 때문에 공격의 이해를 위해 필요하다.
    • 서버 : 해당 서버가 어떤 서비스를 제공하고 어떤 방식에 의해 동작되는지 알아야 공격으로부터 수비하는 방법을 알 수 있다. (리눅스에 대해서 알고있어야 한다.)
    • 프로그래밍 : 해킹 프로그램에 대응하려면 프로그래밍에 대한 기본적인 지식이 필요하다.

보안 모델과 솔루션

  • 보안의 3대 요소
    • 기밀성
      • 정보를 오직 인가된 사용자에게만 허가한다.
    • 무결성
      • 허락되지 않은 자가 정보를 수정하거나 위/변조 할 수 없도록 하는것 (정일완)
        • 정확성 → 틀린 내용 X
        • 완전성 → 내용중에 빠진것이 있으면 X
        • 일관성 → 다른 정보와 일치해야한다.
    • 가용성
      • 접근 권한이 있으면 정보에 정해진 시간 내에 접근할 수 있음을 보장
  • 보안성 강화
    • 기술적 보호 조치 (보안 솔루션)
    • 보안 정책에 의한 절차적 보안 조치도 필요하다. (직원 교육)
    • 보안 정책과 기준을 기반으로 적합한 보안 제품을 도입한다.
  • 정리보안 솔루션 구축, 직원 교육으로 절차적 보안 조치, 보안 제품 도입
  • 보안의 3대 요소로 기무가 (기밀성 무결성(정일완) 가용성)

시스템 보안

  • 최근의 많은 보안 사고들은 네트워크를 통해 외부에서 침입한 공격에 의해 발생하고있다.
    • 제로데이 공격과 같은 기존에 알려지지 않은 최신 공격 기법을 사용한 경우에는 어쩔 수 없지만**, 많은 보안 사고들은 미리 준비를 하면 막을 수 있는 경우가 대부분**이다.
      • 정상적인 패치가 나오기 전 까진 무방비 상태
      • 아직 알려지지 않은 컴퓨터 소프트웨어 취약점을 의미한다.
        • 취약점이 발견되면 제작자나 개발자가 취약점을 보완하는 패치를 배포하고 사용자는 이를 다운받아 대응한다.
        • 제로데이 공격은 공격의 신속성을 의미하는 것 (대처 방법이 없다.)

시스템

  • 서버
    • 서비스를 제공하는 시스템
    • 웹 서버 프로그램을 설치하면 → 웹서버
    • DBMS 서버 프로그램을 설치하면 DB 서버
    • 대표적인 서버 운영체제 → 윈도우 / 유닉스 (금융쪽에서 많이 사용한다.) / 리눅스
  • 정보 시스템 개요
    • 데이터를 수집 저장 가공 배분하는 시스템으로 정의한다.
    • 하드웨어 소프트웨어 사람 데이터 프로세스 로 구성된다.
  • 시스템 : 보안 공격 대상이 될 수 있는 단위
    • 대표적인 시스템 → 리눅스 / 윈도우 / 유닉스 (서버용 운영체제)
  • 서버
    • 서비스를 제공하는 시스템
    • 서버용 운영체제가 설치된 컴퓨터
      • 웹서버 프로그램 → 웹서버
      • DBMS 서버 프로그램 → DB서버
  • 시스템의 보안성을 평가하는 4가지 항목 (각각의 항목들이 제대로 보안성을 갖추고 있는지가 안정성을 평가하는 측도가 된다.)
    • 계정관리
      • 계정 → 허가된 사용자인지 검증을 위한 정보 (신분증)
      • 관리자 계정 → 엄격한 관리가 필요하다. (전체적으로 컴퓨터를 관리할 수 있는 권한이 있는 계정)
        • 탈취당하면 상당히 심각한 문제가 발생한다.
      • 가능한 관리자 계정의 개수는 줄여라
        • 관리자 계정에 대한 보안 위험 범위가 확대된다. (문이 많은 것;;;)
        • 보안상 관리 비용 증가 (문 고장나면 어쩔겨)
        • 시스템 및 보안 → 관리 도구 → 컴퓨터 관리에서 계정 관리
      • 관리자 아이디를 변경하라
        • 무차별 공격 (브루트 포스) 대비
        • 시스템 및 보안 → 관리 도구 → 로컬 보안 정책
    • 암호 관리
      • 보안 공격자는 사람들이 쉽게 사용하는 암호들을 미리 관리한 암호 사전이 있다. (밥먹듯이 해킹하는데 없으면 이상;;)
      • 좋은 암호가 가지는 특징
        • 길이가 길어야 한다.
        • 영어 숫자 특수문자 등을 조합
        • 로컬 보안 정책 설정 → 비밀번호의 보안 강도를 강제적으로 설정해준다.
    • 서비스 관리
      • 공유 폴더에 대한 익명 사용자의 접근을 막아라.
        • 컴퓨터 관리 → 공유 폴터
        • 인가 되지 않은 익명의 사용자가 네트워크를 통하여 중요한 문서에 접근할 수 있다면 보안적으로 심각한 문제가 발생할 수 있다. (우리집에 쌩판 남 들어오면 안됨;;)
      • 불필요한 서비스를 제거하라
        • 보안 가이드에서 권고되는 중지 대상 서비스를 제거

      • FTP 서비스를 가능한 사용하지 않거나 접근 제어를 엄격하게 관리한다.
        • FTP
          • 서버 ↔ 클라이언트 사이의 파일 전송을 위한 통신 프로토콜 중 하나
          • 윈도우 서버 운영체제에서는 FTP 서비스를 제공한다.
          • www 방식보다 파일을 빠른 속도로 한꺼번에 주고 받을 수 있다.
          • 사진, 음악, 동영상 등의 멀티미디어 콘텐츠는 내려받기가 완료 후 다음에 확인이 가능하다.
        • 익명 인증 금지
        • Everyone 계정 제거
        • 접근 제어 설정
          • 접속 가능한 IP주소 대역을 설정한다.
        • SFTP 가 권장된다.
          • SSL 암호화 통신 프로토콜을 사용한다.
          • 스니핑을 통한 유출 가능성이 낮다.
          • SSH 개요
            • 안전하게 통신할 수 있는 기능을 제공하는 응용 프로그램 또는 프로토콜
          • SSL
            • 네트워크에 통신 보안을 제공하기 위해 설계된 암호 규약
    • 패치 관리
      • 소프트웨어의 사소한 기능 개선 또는 버그나 오류 등을 수정하기 위해 개선한 프로그램
      • 핫픽스와 서비스 팩
        • 핫픽스 → 버그 수정이나 보안 취약점 보완을 위해 긴급히 배보하는 패치 (so hot..)
        • 하나의 핫픽스는 하나의 취약점 혹은 버그만 다룬다.
      • 서비스 팩
        • 여러개의 패치 및 개선 사항이 모여있는 프로그램
        • 운영체제의 핵심인 커널이 변경되기도 한다.
        • 패치를 따로 설치하는 것보다 서비스 팩을 설치하는 것을 권장한다.
    • 로그 관리
      • 로그 : 책임 추적성을 가능하게 하는 기반 자료
        • 책임 추적성 → 사용자의 행위에 대해 추적이 가능하다. (발자취..)

 

  Comments,     Trackbacks
운영체제 이론 03-14 (정리) 운영체제의 정의와 탄생 배경
더보기
  • 강의 목표
    • 운영체제의 정의와 목표를 알고 기능을 간단히 이해한다.
    • 운영체제가 없던 시절에서 운영체제가 생겨나는 태동 과정을 앎으로써 운영체제의 발단과 역할을 이해한다.
    • 원시 운영체제 이후 운영체제의 발전 과정을 이해한다.
    • 다중프로그래밍 (멀티태스크) 의 출현이 가져온 컴퓨터 시스템과 운영체제의 발전과 영향을 이해한다.
    • 운영체제의 종류와 특징을 간단히 이해한다.

운영체제 정의

  • 사용자와 컴퓨터 하드웨어 사이에 중계 역할을 하면서 프로그램을 실행/제어하는 시스템 소프트웨어이다.
    • 운영체제는 컴퓨터가 아니다.
    • 운영체제는 실체가 있는 소프트웨어이다.
    • 우리가 실제 사용하는 것들은 모두 응용 소프트웨어이다.
  • 컴퓨터가 켜질 때 처음으로 적재되어 나머지 모든 프로그램의 실행을 제어하고 사용자의 요청을 처리해주는 소프트웨어
  • 컴퓨터의 자원을 독점적으로 관리하는 특별한 소프트웨어
더보기
  • 정리컴퓨터의 자원을 독점적으로 관리한다.
  • 운영체제는 컴퓨터가 아니고 소프트웨어이다. (시스템 소프트웨어)

 

  • 응용소프트웨어
    • 흔히 아는 실행 프로그램
      • 크롬 / 한글 / 엑셀 등등
    • 실제 시스템 소프트웨어는 보이지않는다.
    • Linux , Unix, Windows, Mac Os 등
      • 하드웨어를 제어해준다.
      • Cpu, Cache , Ram, 디스크, 네트워크, MNU, DMAC (외부적인 장치)
  • 운영체제는 컴퓨터의 모든 자원을 관리한다.
    • 자원
      • 하드웨어 자원 - Cpu, Cache , Ram, 디스크, 네트워크, MNU, DMAC (외부적인 장치)
      • 소프트웨어 자원 - 응용프로그램
      • 데이터 자원 - 파일, 데이터베이스 등
  • 운영체제는 자원에 대한 독점 권한을 소유한다.
    • 자원에 대한 모든 관리 권한은 운영체제에 있다.
      • 자원 할당, 자원 공유, 자원 액세스, 자원 입출력 등
        • 램이 한정적이기 때문에 효율적으로 관리할 수 있도록 관리 권한을 위임한다.
      • 에 ) 파일 생성 → 디스크의 빈 공간 관리, 파일 저장 위치 관리, 파일 입출력 등
  • 운영체제는 관리자이다. (Supervisor)
    • 실행중인 프로그램 관리, 메모리 관리
    • 파일과 디스크 장치 관리, 입출력 장치 관리, 사용자 계정 등 관리 등
  • 운영체제는 소프트웨어이다.
    • 커널(kernel) 이라고 불리는 핵심 코드와 UI를 비롯한 도구 프로그램들 (tool/utility) , 장치를 제어하는 디바이스 드라이버들로 구성된다.
    • 커널이 가장 중요한 역할을 가진다.
더보기

시스템 소프트웨어는 눈에 보이지 않는다.

운영체제는 하드웨어 자원과 소프트웨어 자원, 데이터 자원 을 관리한다.

자원에 대한 독접 권한을 소유하고 관리자 역할을 하는 소프트웨어이다. (커널, 도구프로그램, 디바이스 드라이버 들로 구성)

 

운영체제의 목적과 기능

  • 운영체제의 목적
    • 사용자의 컴퓨터 사용 편리성
      • 사용자에게 편리성을 제공한다.
    • 컴퓨터의 자원 관리 효율성
  • 운영체제의 기능
    • CPU / 프로세스 관리
      • 과거엔 cpu에는 하나의 프로세스밖에 없었다.
      • 요즘엔 여러개의 프로세스를 갖고있다.
      • 필요할때만 프로세스가 동작하거나 쉬도록 관리한다.
      • 단순히 디스플레이만 해도 그래픽카드의 프로세스가 동작하고 있는 것이다.
      • 스레드에 대한 개념도 들어간다.
    • 메모리 관리
    • 파일 시스템 관리
    • 장치 관리
    • 네트워크 관리
    • 보안 관리
    • 기타 관리
      • 사용자 관리 / 사용자 계정 관리
      • 통계 → CPU / 메모리 / 네트워크의 사용 시간, 사용자의 접속 시간 등
      • 오류 발견 및 대응
      • 부팅
    • 하드웨어 / 소프트웨어 사이의 전반적인 관리를 담당한다.
    • 응용프로그램을 위해선 실행 언어가 필요하다. (대표적으로 C언어)
더보기

운영체제는 사용자에게 편리성을 제공한다.

하드웨어 / 소프트웨어 사이의 전반적인 관리를 담당한다.

 

운영체제의 태동

  • 고정 프로그램 방식
    • 1940년대 전자식 디지털 컴퓨터가 만들어지기 시작하는 시대
    • 0과 1로 , 고정식으로 모든 연산이 이루어졌다. (로터리 방식 Lottery)
    • 운영체제에 대한 개념이 없었다.
    • 소프트웨어 / 하드웨어 분리 개념이 없고 모든것이 하드웨어로 제작되었다.
    • 프로그래밍
      • 종이에 스위치와 전선 연결로 작성
      • 배선판에 전선 연결, 프로그램을 기계에 고척화 했다.
      • 하나의 명령을 구성하기 위해 여러가닥의 전선 연결
        • 프로그램의 전체 구축에 수천개의 전선 연결 (유지보수 힘듬)
      • 새로운 프로그램을 작성할 때 큰 고통이 있었다.
        1. 41 년 Z3 펌퓨터
        2. 44년 콜로서스
        3. 43~45년 애니악
          1. 진공관 약 18000개로 구성된 30톤크기의 컴퓨터
  • 내장 프로그래밍 방식
    • 45년 폰노이만에 의해 제안되었다.
    • 51년 EDVAC 컴퓨터를 만들 때 적용
    • 오늘날 컴퓨터의 구조가 되었다.
  • 내장 프로그램 컴퓨터의 의미
    • CPU와 메모리 분리
      • 처음부터 메모리에 대한 개념이 나오진 않았을 수도 있다.
      • 계산은 CPU가 했기 때문
    • 소프트웨어 하드웨어 분리
    • 실행할 프로그램을 메모리에 담고 CPU가 프로그램을 실행하는 방식
    • 프로그램은 입력장치를 통해 메모리에 적재
      • 펀치카드에 구멍을 뚫어 프로그램을 작성했다. (새로운 입력장치)
      • 카드 리더기로 프로그램을 메모리에 적재했다.
    • 메모리 장치 ↔
      • 제어장치 CU
      • 연산장치 ALU
      • 레지스터
        • 모든 cpu마다 각각 다른 형태의 레지스터가 있을 수도 있다.
    • 컴노이만 구조에서 기본적인 구조가 바뀌지 않았다.
더보기
  1. 운영체제에 대한 개념이 없던 고정 프로그램 방식 (0과 1로만 연산됨, 하드웨어만 존재)
  2. 오늘날 컴퓨터의 구조가 된 폰노이만 구조를 따르는 내장 프로그래밍 방식 (CPU와 메모리, 소프트웨어와 하드웨어 분리) / 메모리에 프로그램을 적재 후 실행
폰노이만 구조
  • 프로그램 로딩 시대
    • 운영체제 개념의 시작
    • IBM 701 메인프레임
      • 54년 IBM에서 만든 첫 번째 내장 프로그래밍 컴퓨터
      • 첫번째 범용 컴퓨터
      • 판매하지 않고 대여만 가능했다. (완벽하지 않았기 때문)
      • 기계만 대여 , 소프트웨어 제공 X
        • 대여한 고객(기업) 이 모든 것을 했어야 했다.
      • 일반적인 개발 형태
        • 첫번째 카드
          • 카드에 작성된 프로그램을 메모리에 적재하는 코드만 작성 (컴파일)
        • 두번째카드부터 행동하는 프로그램을 작성했다. (실행)
      • 로더 프로그램 필요
        • 개발자가 뒷 카드들을 메모리에 적재하는 프로그램을 첫번째 카드에 작성하는 반복되는 시간 낭비를 줄일 필요가 있었다.
          • 이 코드를 로더라고 부른다.
          • 로더는 모든 개발자에게 공통으로 필요했다.
        • 로더가 운영체제로 발전
          • 오늘날 운영체제의 가장 기본적인 기능
    • GM OS
      • 55년 IBM 701의 고객 기업 GM에 의해 개발되었다.
      • 핵심 개념
        • 로더 프로그램을 사용자 프로그램에서 분리
        • 사용자의 직접 적재해야하는 로더 프로그램 작성의 번거로움을 해소했다.
        • 테이프에 저장, 필요할 때마다 실행
        • 해당 로더 프로그램을 모니터 라고 불렀다.
        • 후세대 Genera lMotors Operating System (GM OS) 라고 불러졌다.
      • 테이프 장치 → 로더 프로그램 → 사용자 프로그램 (여기까지 한번만) → CPU
    • GM은 IBM 701의 처리 속도를 높인 IBM 704를 주문
      • 최초의 운영체제인 GM-NAA I/O 개발
        • 56년 GM과 NAA의 공동개발
          • 운영체제로서의 모습 갖춤
            • 배치 방식으로 작동 (batch operating system)
              • (컴퓨터의 setup과 비슷하다. 루틴을 만들어주는것)
              • 개발자들이 작성해놓은 순서대로 하나씩 메모리에 적재후 실행
          • I/O 프로그램을 메모리에 상주 (오늘날 운영체제 방식)
            • 실제 cpu 는 성능이 좋지만 외부로 나가는것은 그만큼 성능이 떨어진다.
            • cpu는 대부분 64비트 이지만 출력하는 것들은 대부분 32비트 (데이터가 반절)
            • 그런것들을 효율적으로 쓰기 위해서 루틴들을 라이브러리 형식으로 갖추고 프로그램 사이에 공유
      • 어셈블러 코드
        • 어셈블리어 프로그램을 기계어 코드로 번역해줌
      • 운영체제 메인 코드와 공통 입출력 코드
        • 운영체제 메인 코드 - 시작 코드
        • 공통 입출력 코드 - 장치 입출력을 다루는 프로그램 코드
          • 라이브러리 개념 등장
            • 별도로 제어할 수 있도록

 

더보기
  1. 로더 프로그램이 필요했던 운영체제 개념의 탄생
    • 로더가 운영체제로 발전되었다.
  2. 로더 프로그램 , 사용자 프로그램을 분리한 GM OS 탄생 (로더 프로그램 작성의 번거로움 해결)
  3. 배치 방식으로 작동하는 제대로된 운영체제라 할 수 있는 GM-NAA I/O 개발 (작성해놓은 프로그램 순서대로 메모리에 적재후 실행되는 방식, 루틴을 라이브러리 형식으로 갖춤)

운영체제 태동 시절

  • 1세대 컴퓨터 시절 → 운영체제 암흑 시대
    • 운영체제 개념이 없었다.
  • 배치 운영체제
    • 컴퓨터가 유효시간이 발생하게 되었다.
    • 효율적으로 사용하기 위해서 개발자와 관리자가 구분되었다.
    • 개발자 → 펀치카드를 입력 덱에 두고 결과를 기다림
    • 관리자 → 한번에 하나씩 적재하고 실행하도록 관리
  • 다중 프로그래밍 운영체제
    • CPU속도 개선, 컴퓨터 가격 증가
    • 많은 사업자들이 활용할 수 있는 기회가 생겼다.
    • CPU작업 →IO 작업 → CPU작업 → ..의 반복
    • IO작업이 이루어지는 동안 CPU는 놀면서 대기했기 때문에 CPU의 유효시간을 줄일 필요가 있었기때문에 다중 프로그래밍 기법 출현
      • 프로그램 실행중에도 입출력을 계속 해라!
  • 다중 프로그래밍으로 인한 이슈
    • 메모리의 크기를 늘릴 필요가 있었다.
    • 메모리 할당 및 관리 이슈
    • 프로그램이 다른 영역을 침범하지 못하도록 막는 방법이 필요했다.
    • CPU 스케줄링과 컨텍스트 스위칭
      • 프로그램의 실행 상태를 저장할 컨텍스트 정의
      • 컨텍스트 스위칭이 필요했다.
        • 여러개의 프로세스가 실행되고 있을 때 기존에 실행되던 프로세스를 중단하고 다른 프로세스를 실행하는 것. 즉, CPU에 실행할 프로세스를 교체하는 기술이다.
        • 컨텍스트 스위칭을 하는 주체는 스케줄러이다.
    • 인터럽트 개념 도입
      • IO 장치로부터 입출력 완료를 전달받는 방법이 필요했다.
    • 동기화
      • 여러 프로그램이 동일한 자원을 동시에 액세스할때 발생하는 문제 해결 필요
    • 교착 상태 해결
      • 프로세스들이 상대가 가진 자원을 서로 요청하면서 발생하는 문제 해결 필요
  • 시분할 다중 프로그래밍 운영체제
    • 시분할 운영 체제는 많은 사용자들이 컴퓨터를 공유하도록 한다 .
    • 다중 프로그래밍 운영체제와 거의 동시에 연구가 시작됨
      • 비 대화식 처리방식과 느린 응답시간, 오랜 대기시간의 문제점 인식
    • 사용자에게 빠른 응답을 제공하는 대화식 시스템 제안
      • 터미널 → 키보드 + 모니터 + 전화선 + 모뎀
      • 사용자들은 터미널을 이용하여 메인 컴퓨터에 원격으로 접속하였다.
      • 운영체제는 시간을 나누어 돌아가면서 각 터미널의 명령을 처리 할 수 있다. → CTSS 시분할 시스템 (1962 MIT)
        • 프로그램 ↔ 시분할 운영체제 ↔ 터미널

 

더보기
  1. 배치 운영체제다중 프로그래밍 운영체제시분할 다중 프로그래밍 운영체제 순서로 발전
  2. 유효시간을 줄일 필요가 있었기에 배치 운영체제에서 다중 프로그래밍 운영체제로 발전
  3. 컨텍스트 스위칭과 인터럽트의 개념이 생겼다.

https://velog.io/@hayeon/Context-Switching%EC%99%80-Interrupt

 

Context Switching와 Interrupt

우리 눈에는 여러가지 프로그램은 동시에 실행시키는 것으로 보이지만, 사실 여러개의 프로세스를 짧은 시간 번갈아 실행시키면서 동시에 실행하는 것처럼 보이는 것입니다. 이는 CPU는 한번에

velog.io

 

개인용 운영체제

  • 출현 배경
    • 메인 프레임 → 성능 향상된 미니 컴퓨터 시대
    • 사용자가 늘어나게 되면서 개인용 컴퓨터의 필요성을 느끼게 됨
      • 원격 접속 X 개인으로 사용
    • 인텔 4004 가 시장에 등장 (1971) 마이크로 프로세서 CPU장치 (애니악에 버금가는)
    • CPM을 모티브해 나온것이 1980년 개인용 운영체제 MS-DOS 등장 (320KB)
  • 임베디드 컴퓨터 (내장형)
    • OS를 기본으로 사용하는 다양한 시스템이 나오게 되었다.
    • 소형 컴퓨터
    • 임베디드 시스템 : (영어: embedded system, 내장형 시스템 )은 기계나 기타 제어가 필요한 시스템에 대해, 제어를 위한 특정 기능을 수행하는 컴퓨터 시스템으로 장치 내에 존재하는 전자 시스템이다.
  • 임베디드 운영체제
  • 모바일 컴퓨터
    • 휴대 가능한 크기로 들고 다닐 수 있는 모바일 장치 혹은 모바일 컴퓨터 출현
  • 모바일 운영체제
  Comments,     Trackbacks
네트워크 - 0310 (정리) 네트워크의 목적과 용어

네트워크의 목적

  • 원래는 데이터 공유이지만 자원 → (컴퓨터에 관련된 모든 자원) 공유까지 확장이 되었다.
    • 컴퓨터에 있는 cpu를 본인만 사용하는게 아닌 다른사람도 사용할 수 있도록 도와주는것과 같다.
    • 핵심은 데이터 공유이다.
  • 노드와 링크의 개수가 많아질 수록 관리하기 어려워진다. 이를 해결하기 위해서는 네트워크를 분할하여 관리해야한다.
더보기
  • 네트워크 목적과 정의 정리
  • 네트워크의 핵심은 데이터 공유이다. 그러나 노드와 노드 사이를 연결하는 링크의 개수가 많아질 수록 관리하기 어려우니 네트워크를 분할하여 관리해야한다.

 

컴퓨터와 네트워크

  • 컴퓨터 → IT (Information Technology) + CT (Communication Technology) : ICT
    • 일반적으로 컴퓨터는 입력을 받아서 목적에 맞도록 출력을 한다.
    • 처리는 소프트웨어가 한다.
        • 연산 (컴퓨팅) → ALU (Arithmetic Logic Unit)
          • 사칙연산
          • 논리연산
        • 제어 ⇒ CPU가 한다. (Control Process Unit : 중앙 처리 장치)
      • 결과는 메모리에 저장된다.
    • 대표적으로 입력을 데이터라고 한다.
      • 입력을 메모리로부터 받을 수도 있다.
    • 데이터 → 컴퓨터 → 인포메이션 (정보 데이터를 받아서 처리된 것)
    • 인풋 아웃풋 저장 제어 처리
    • 데이터 (0과 1로만 표현이 된다.) → 컴퓨터 → 인포메이션
      • 문자 (숫자도 문자임) → 아스키코드 → 문자
      • 숫자
      • 소리
      • 이미지
      • 영상
      • IoT자료
    • 데이터는 아날로그디지털로 나뉘어져있다.
      • 디지털 데이터는 노드에서 노드로 전달될때 신호로 바뀌어진다.
      • 신호를 전달하는 것도 네트워크라고 할 수 있다.
      • 디지털데이터 → 아날로그 시그널 변환을 모뎀이 도와준다.
      • 아날로그 데이터 → 디지털 시그널 변환은 코덱이 도와준다. (소프트로 구현이 된다.)
        • LTE / 5G 디지털 데이터
        • 2G / 3G 아날로그 데이터
      • 디지털 데이터 → 디지털 시그널은 DSU 가 도와준다.
      • 아날로그 데이터 → 아날로그 시그널은 디지털 방송장비가 도와준다.
  • 노드 → 컴퓨터 기능, 통신 기능
    • NIC : 노드 통신 장치
    • TCP/IP 관련된 프로그램을 통신 장치에 장착시킨다.

 

더보기
  • 컴퓨터 정리연산의 종류 : 사칙연산 , 논리연산 / 제어 담당은 CPU → 결과는 메모리에 저장디지털 데이터는 링크에서 신호로 바뀌어진다.
  • 노드는 컴퓨터 기능과 통신 기능을 한다.
  • 데이터를 입력받아 정보를 내보낸다.
  • 컴퓨터는 입력을 받아서 목적에 맞도록 출력한다. 목적에 대한 처리는 소프트웨어가 한다.

 

네트워크 용어

  • **링크 (**미디어 : 매체) → 네트워크 노드사이를 연결해주는 것
      • 유선 ?
        • UTP 케이블 (전기 전달)
        • 광케이블 (빛 전달)
        • 시리얼 케이블
          • (UTP케이블로 만든 콘솔 케이블)
          • V.35 케이블
      • 무선 ?
        • 공기 (매체 → 에너지(전파) 전달) /진공
    • 노드 → 입력 받아서 처리해서 아웃풋을 내주는 것 (요청 / 응답)
      • 호스트 노드
        • 클라이언트 : 요청한다.
        • 서버 : 요청을 받는다.
      • 커넥트 노드
        • 엔드포인트에서 다른 엔드포인트로 데이터를 수신하고 보낼 수 있는 라우터, 프린터 또는 스위치와 같은 네트워크 장치 간의 연결 지점
    • 통신은 호스트 ↔ 호스트 (연결해주는 장치는 스위치 혹은 라우터)
    • 라우터
      • 패킷을 전송하는 네트워크 장치
    • 모든 노드의 입력은 데이터이다.
    • 무수한 노드와 링크의 연결을 네트워크라고 한다.
    • 노드가 어떠한 역할을 하느냐에 따라서 달라진다. (소프트웨어가 결정한다.)
    • 노드에 TCP/IP 를 설치하면 인터넷이 된다.
    • 수식이 성립이 되려면 노드는 적어도 두개 이상이어야 한다.
    • 네트워크 : Σ(노드+링크)
더보기
  • 네트워크 용어 정리
  • 노드는 입력을 받아서 출력을 한다. → 호스트 노드 : 클라이언트가 요청하고 서버가 요청을 받는다. / 커넥트 노드 → 라우터 스위치 같은 네트워크 장치간의 연결 지점노드가 어떠한 역할을 하느냐에 따라서 달라지고, 역할은 소프트웨어가 결정한다.
  • 통신은 호스트 to 호스트 방식으로 한다. (L3 네트워크 계층 : TCP / IP, 패킷)
  • 링크 : 노드와 노드 사이를 연결해준다. → 유선 : 광케이블 ,UTP, 시리얼케이블 / 무선 : 공기

 

  Comments,     Trackbacks
재사용 가능한 컴포넌트 만들기

컴포넌트?

프론트엔드 공부를 시작하기 이전에, 나는 자바를 공부하고 있었고, 어쩌다가 접하던 프론트엔드 글에는 무조건 들어가는 단어가 있었다.

바로 컴포넌트 였다.

그러면 리액트에서의 컴포넌트란 무엇일까?

리액트에서는 기존의 html 태그를 이용하는 것처럼 함수를 선언해 태그처럼 사용할 수 있다.

함수 속에 함수를 선언하거나 외부에서 함수를 불러와서 사용 할 수도 있다.

말그대로 함수형 컴포넌트는 이러한 함수를 컴포넌트로 사용하는것 이라고 생각했다.

컴포넌트가 될 수 있는 부분을 살펴보기

  • 백엔드던 프론트엔드던 가장 좋은 코드는 유지보수가 가능하고 쉬운 코드라고 생각한다.
    • 개인적으로 항상 내가 코딩할 할때 두는 목표는 확장,수정에 힘든 부분이 없도록 설계하는것이다.
  • 서버 개발을 진행할때도 대부분 최대한 한 객체는 하나의 역할만 갖고, 하나의 메소드또한 마찬가지로 하나의 작은 역할을 갖도록 진행했었다.
  • 해당 부분을 단순히 프론트엔드에서 끌어와서 생각해보면 그 하나의 역할만 갖도록 만드는것이 재사용 가능한 컴포넌트를 만드는 작업이라 생각이 되었다.
    • 예를들면 많이 쓰일 수 있는 부분들 (검색창 , 테이블, 버튼, 텍스트 입력창) 같은 부분을 최대한 내부의 코드를 바꿀 필요 없이 요구하는 재료들만 갖다주면 알아서 뿅~ 하고 나오도록 만든다면? 그리고 내부의 코드를 바꿀때도 복잡하게 하나를 변경하면 다른 연결된 무언가를 싹 다 바꿀 필요 없도록 만든다면?
  • 어떠한 홈페이지의 메인 페이지를 구성하다보니, 재사용이 가능한 부분들이 몇개가 있었다.
    • 본인같은 경우에는 메인 페이지에 게임 캐릭터의 랭킹을 표현 할 수 있는 테이블과, 최근 게시글을 출력할 수 있는 테이블 (벌써 이 두개도 하나의 컴포넌트로 재사용이 가능 하겠다는 생각이 들었다.🤓) , 검색창과 헤더, 모바일 메뉴, 로그인창 정도가 있었다.
      • 해당 구성중에 검색창과 테이블, 그리고 로그인창 등에 들어가는 텍스트 필드가 재사용이 가능하겠다는 생각이 들었다.
      • 하나로 예를 든다면, 카테고리와 검색어를 입력하면 검색 결과로 이동하게 해주는 검색창을 만들어버리면 다른 화면에서 매번 새로 커스텀해서 사용할 필요 없이 단순히 스타일만 변경해서 사용한다면 개발 시간이 굉장히 단축된다는 소리이다.

재사용이 애매한 컴포넌트를 재사용이 가능하도록 만들어보기

  • 위에 적어뒀듯이 본인이 진행할 프로젝트에 가장 많이 사용 될 수 있는 부분부터 생각해보면 좋을 것 같다.
    • 본인같은 경우에는 진행하던 프로젝트가 어떠한 게임 랭킹 조회 사이트 + 커뮤니티 사이트 클론코딩 이었기 때문에 랭킹 테이블이 가장 많이 노출될 것 같았다.
  • 여기서도 생각해볼 수 있는게, 어떠한 것을 재사용이 가능한 컴포넌트로 만들것인지가 중요한것같다.
    • 랭킹 테이블 자체를 만들것인가?
    • 혹은 기본적인 테이블을 만들어서 각 상황에서 커스텀이 가능하도록 꾸밀것인가?
  • 나는 둘다를 선택했다.
    • 왜냐하면 테이블 자체가 여러곳에서 사용이 가능하다. (위에도 언급했듯이 본인의 프로젝트에선 최근 게시판을 출력할때도 사용이 가능했고, 랭킹용으로도 사용이 가능했다. 더 나아가선 마이페이지에서도 사용이 가능할 것 같았다.
    • 랭킹테이블 자체 또한 여러 상황에서 사용이 가능했기 때문에 기본적인 테이블 틀을 만들어 둔 후에, 랭킹용으로 사용 할 수 있는 컴포넌트를 한번 더 만들었다.

처음 스타일은 아니지만, 이런식으로 재사용이 가능하도록 세부 카테고리를 갖고 있는 테이블 컴포넌트를 만들어주었다.
이런식으로 기본적인 카테고리를 갖고있는 테이블 컴포넌트를 생성하고, 바디에는 또다른 내용이 들어가도록 자식노드를 넣어주었다.
만들어둔 테이블컴포넌트를 이용하여 최근 게시글 테이블을 만들었다.
마찬가지로 만들어둔 테이블에 바디부분만 새로 꾸며서 랭킹 테이블을 만들었다.
그러면 전체 틀은 테이블 컴포넌트로 꾸며주고, 바디부분만 그리드를 활용해서 꾸며주는 방식으로 2차 활용이 가능하다.

  • 이런식으로 export 되는 컴포넌트들을 하드코딩 하지 않고, 건내주는 props 들을 잘 활용한다면 말그대로 옷입히기 하는것처럼 웹사이트를 완성시킬 수 있다.
    • 굉장히 좋은점은 이 글을 작성하는 지금도, 생각해보니 화살표 버튼을 만들었지만, 해당 버튼을 클릭할때 행동을 정의해두지 않았다.
    • 단순히 건내주는 props 에 boolean 값을 받는 useArrow 와 함수를 받는 onClickArrow 를 추가하여 동작하도록 단 한줄의 코드만 추가하면 끝이었다.

이런식으로 상위 컴포넌트에 옵션을 추가해주도록 선언하면 끝이다.

 

그러면 전체 틀은 테이블 컴포넌트로 꾸며주고, 바디부분만 그리드를 활용해서 꾸며주는 방식으로 2차 활용이 가능하다. (수치는 수정할 예정이라 보지마세용.)

  • 이 사진만 보더라도 내가 단독으로 고칠 수 있는 부분이 벌써 10개정도 된다.
    • 테이블의 타이틀과 스타일링
    • 화살표의 유무와 행동 방식
    • 카테고리를 사용할지 말지와 카테고리 버튼의 행동과 글씨 스타일링
    • 테이블 내부 콘텐츠 스타일링
    • 순위 아이콘 스타일링
    • 캐릭터 이미지 출력 스타일링
    • 캐릭터 이름/ 모험단 이름/ 서버이름 스타일링
    • 랭킹 수치 스타일링
  • 이정도만 해도 9가지이고, 더 나아가서 스타일링 또한 상위 컴포넌트에서 단독적으로 다루도록 할 수 있게 만든다면 금상첨화인것
  • 이렇게 랭킹 테이블을 만들어두면 여러 랭킹 출력 화면에서 사용이 가능하다.

 

  Comments,     Trackbacks