ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [시스템구조]
    CS 2020. 6. 15. 14:57

    [시스템]

    - 하드웨어(컴퓨터구조)+운영체제
    - 시스템 프로그래밍 : 컴퓨터 시스템을 활용하는 SW 개발
    ========================================================
    [시스템 구성요소]

    :: 컴퓨터 구조
    cpu
    캐시

    :: 운영체제
    메인메모리
    하드디스크
    ========================================================
    [하드 웨어]

    *입력장치(input unit)
     * 중앙처리 장치(CPU)  - 제어장치
    - 주기억장치 (main memory)
      * [보조기억장치] - 논리 연산 장치
    * 출력장치(output)
    ========================================================
    cpu :: 중앙처리장치, 연산이 이뤄지는곳
    메인메모리 :: RAM, 프로그램 실행방식은 이해하는 것
    입출력 버스 :: 데이터 송수신 방식 이뤄지는 곳
    ========================================================
    <cpu>

    ALU :: 실질 연산 
    레지스터 :: 명령, 데이터 저장. 결과도 저장.
    컨트롤 유닛 :: 명령해석해서 ALU에 명령전달
    버스 인터페이스 :: 버스 통신규약 해석해 데이터,명령 받아옴

    하드디스크-> 메인메모리 -> 입출력 버스 -> 버스 인터페이스 
    -> 레지스터(명령,데이터)  -> 컨트롤 유닛, 레지스터
    ========================================================
    :: 클럭신호
    - 하드웨어의 동작타이밍을 의미함.
    - 요소들의 동기화를 위해, 시스템의 안정성을 위해 필요함.
    - 클럭을 높으면 일은 빨라지지만 열이 발생
    ========================================================
    <프로그램 실행과정>

    전처리기 > 컴파일러 > 어셈블러 > 링커

    전처리기 :: #include. #으로 시작하는 지시자.
    컴파일러 :: 프로그래밍 언어를 cpu의 명령어로 번역 
    어셈블러  :: cpu 명령어를 바이너리 코드(0100)로 번역
    링커 :: 바이너리+ 라이브러리 결합해 실행파일 만듬

    ::Strored Program Concept
    - 프로그램이 메모리에 저장이 되는 컨셉으로 만들어야 한다.
    - 실행파일의 명령들은 메모리에 저장 
    - cpu 명령 하나씩 가져가(패치) 해석(디코드) 연산(익스쿠션)

    ** 실행파일 => 메모리(RAM) 
    => 명령 1개  I/O BUS로 이동(패치) 
    => 버스인터페이스 => 레지스터 명령 1개 등록 (패치끝)
    => 컨트롤 유닛 명령해석 (디코드)
    => ALU에 명령.실행 (익스쿠션)
    ========================================================
    < I/O BUS > CPU <---BUS--->Memory

    - 데이터 버스 :: 데이터 이동
    - 어드레스 버스 :: 데이터의 주소정보 이동 
    - 컨트롤 버스 :: 컨트롤 신호 이동
    ========================================================
    ** RAM에서 레지스트로 옮기는 명령어 LOAD
    ** 레지스트에서 결과를 RAM로 옮기는 명령어 STORE
    ========================================================
    <프로세스 스케줄러>  - 여러개의 프로세스를 스케쥴링 하는 것.

    <프로세스>

    - 메인메모리로 이동하여 실행중인 프로그램
    - 프로세스의 범위는 메모리공간+독릭적으로 사용되는 레지스터 셋
    - CODE + DATA + HEAP + STACK

    * 콘텍스트 스위칭 :: 프로세스 우선순위 변경시, 
      기존 프로세스의 명령이 있는 레지스트 셋은 메모리에 저장. 
       새 프로세스 명령을 레스트르 셋에 채움.

    * 프로세스 상태
    러닝 :: CPU에 의해 실행된 상태(1개)
    레디 :: 러닝 준비상태
    블럭디드:: I/O 연산중인 프로세스. 연산끝나면 READY

    ** I/O는 CPU와 독립적인 과정이다. CPU를 안쓴다.
        I/O작업이 끝나고 CPU 작업을 할 수 있도록 READY 아닌 BLOCK
    ========================================================
    - 멀티 프로세스를 진행시,
       프로세스의 코드,데이터,힙은 공유하되 스택만 분리하자!

    <쓰레드>
    - 프로세스별 별도의 쓰레드가 있다. (스택영역이 각각 있음)
    - OS에 따라 커널에서 스레드를 지원하거나 안하는 것이 있음
    - 커널레벨 쓰레드(커널지원) VS 유저 레벨 쓰레드(커널미지원)

    ** 임계영역 : 둘이상의 쓰레드가 모이면 안되는 코드영역.

    :: 스레드의 동기화 - 메모리 접근을 동기화함. 한스레드 한개접근
                                스레드 접근 순서를 동기화함.

    ========================================================

    <언어처리기>

    - 컴파일러 : 고급언어를 기계어로 번역해 주는 프로그램
    - 어셈블러 : 어셈블리어를 기계어로 번역해 주는 프로그램
    - 인터프리터 : 매 명령문마다 기계어로 해석해주는 대화식 프로그램

    +) 하이브리드기법 - 고급언어를 중간단계 언어로 번역한 후
         소프트웨어로 인터프리팅하는 번역 (Java)
    ---------------------------------------------------------
    <프로그래밍 절차>

    1. 문제분석 - 업무 분석, 처리 범위를 정함
    2. 입출력 설계 - 입력 자료와 출력 항목 결정
    3. 순서도 작성 - flowchart, 해결을 위한 흐름을 기호로 정리
    4. 코딩   - 순서도에 따라 프로그래밍 언어로 구현
    5. 컴파일, 링크 - 기계어로 번역작업 
    6. 모의 실행 - 샘플 작업으로 logical error가 있는지 검토.

    ---------------------------------------------------------

    'CS' 카테고리의 다른 글

    [자료구조]  (0) 2020.07.25
    [WEB]  (0) 2020.06.15
    [네트워크] OSI 7계층 과 TCP/IP  (0) 2020.06.15
Designed by Tistory.