컴퓨터 기초/운영체제 이론23 3.아스키 코드 & 유니코드 아스키 코드 & 유니코드 문자 집합의 종류와 특성 MBCS 기반에서 한글사용시 문제점 실제로는 문자 길이는 5인데, 출력된 문자열의 길이가 7이다. 실제 한글 한문자를 두 글자로 인식을 했다. 이부분이 한글을 사용하는데 문제가 될 수 있다. 숫자만 놓고 보면 되고 MBCS가 효율적인데, 메모리보다도 더 안정선을 중요시해서 유니코드를 사용한다. WBCS 기반의 프로그래밍 (유니코드를 위한 자료형) MBCS.cpp의 유니코드 버전 문자열 조작 함수 문자열 입출력 함수 매개변수 전달인자 유니코드화 MBCS와 WBCS 동시지원 참고 뇌를 자극하는 윈도우즈 시스템 프로그래밍 정리 - 한빛출판네트워크 2021. 1. 18. 2.프로그램 실행과정 프로그램 실행과정 참고 cpu개발자는 cpu를 디자인 하면서 cpu명령어를 디자인 한다. cpu명령어에 따라서 cpu 구조가 변경되기도 한다. cpu 명령어 예) 0011 은 덧셈으로 인식하도록 디자인 0010은 마이너스로 인식하도록 디자인 .. 위의 예 처럼 만약 0011이 cpu로 들어가면 컨트롤 유닛에 의해서 덧셈으로 처리된다. 하지만 0011에게는 프로그래머가 직접 사용하기 어렵다. 그래서 0011 명령어에 ADD 같은 문자를 붙였다. 그리고 그 후에 ADD 같은 명령어도 사람이 직접 사용하기 어려워서, java, c 같은 고수준 언어가 만들어진다. 1.전처리기에 의한 치환작업 #으로 시작하는 지시자. ex) #include 전처리기 -> 컴파일러 -> 어셈플러 -> 링커 2.컴파일러에 의한 번역.. 2021. 1. 18. 1.시스템이란? 시스템이란? 하드웨어 + 운영체제 시스템 프로그래밍이란? 운영체제 자체의 기능을 활용해서 소프트웨어를 개발하는 것. 컴퓨터 시스템의 구성요소 컴퓨터 구조 : cpu, 캐쉬 운영체제 : 메인메모리, 하드웨어 cpu : 중앙처리 장치이다. 연산이 이루어지는 원리는 무엇인가를 이해해야 한다. 메인 메모리 : 램이다. 프로그램 실행 방식을 이해해야 한다. 입출력 버스 : 데이터 송수신이 이루어지는 원리를 이해해야한다. cpu에 대한 이해 1.A라는 파일(2+5 더하기 기능) 이 있다. 2.A라는 파일컴파일 3.실행파일(바이너리파일) 하드디스크에 저장 4.실행 5.실행을 위해서 숫자 2와 5 그리고 덧셈이라는 연산자가 메인메모리로 이동하게 된다. (메인 메모리로 올라가야 cpu가 연산을 할 수 있다.) 6.숫자 .. 2021. 1. 17. [운영체제 정리] 8.프로세스 동기화 프로세스 동기화 컴퓨터 안에서 데이터가 접근되는 패턴 데이터가 저장되어 있는 위치(메모리)에서 데이터를 가져와 연산(cpu)을 하고 다시 저장위치에 가져다 놓는다. 이때 데이터의 동기화 문제가 생긴다. 하나의 저장소에서 여러 사람이 공유 데이터에 접근한다면 데이터가 원하는데로 변경이 안될 가능성이 크고, 데이터의 일관성이 유지가 안될수 있고, 데이터 불일치 문제가 생길수 있다. 동기화 문제 여러사람이 하나의 공유 데이터에 접근할때 문제점.예를들어 두 프로세스에서 동시에 시스템 콜이 발생할때, 커널의 데이터에 동시에 접근되어 변경이 될때 문제가 될 수 있다. 동기화문제-커널에서 동기화 문제가 발생하는 경우 1.커널 수행중 인터럽트 발생시 2.프로세스가 시스템콜을 해서 커널모드로 수행중인데 타이머로인해 컨텍.. 2020. 6. 8. [운영체제 정리] 7.멀티레벨 큐 멀티레벨 큐 레디큐를 여러개로 분한다. cpu를 기다리는 여러 큐가 존재한다 위로 갈수록 우선순위가 높다. 준비 큐를 여러개로 분할해 관리하는 스케줄링 기법을 말한다. 즉, 프로세스들이 cpu를 기다리기 위해 한줄로 서는 것이 아니라 여러줄로 서는 것을 말한다. 멀티레벨큐는 일반적으로 성격이 다른 프로세스들을 별도로 관리하고 프로세스의 성격에 맞는 스케줄링을 적용하기 위해 별도의 큐를 두게 된다. 여러개의큐 포그라운드 큐: 사용자와 소통 중심 백그라운드 큐: 배치 프로그램 큐 자체에 대한 스케쥴링 - 고정 우선순위 방식 고정적인 우선순위를 부여해 우선 순위가 높은 큐를 먼저 서비스 하고 우선순위가 낮은 큐는 우선순위가 높은 큐가 비었을때 서비스하게 된다.즉, 전위 큐와 후위큐를 사용하는 방식에서는 전위 .. 2020. 6. 7. [실습과 그림으로 배우는 리눅스 구조] 3.프로세스 관리 프로세스 생성 목적 리눅스에서는 두가지 목적으로 프로세스를 생성한다. 목적1. 같은 프로그램의 처리를 여러 개의 프로세스가 나눠서 처리한다. 예를 들어, 웹서버처럼 리퀘스트가 여러개 들어왔을 때 동시에 처리해야 하는 경우. 목적2. 전혀 다른 프로그램을 생성한다. 예) bash로 부터 각종 프로그램을 새로 생성하는 경우. fork() 함수 같은 프로그램의 처리를 여러개의 프로세스가 나눠서 처리한다는 목적1에는 fork 함수만을 사용한다. fork 함수를 실행하면 실행한 프로세스와 함께 새로운 프로세스가 1개 생성된다. -순서 1.자식 프로세스용 메모리 영역을 작성하고, 거기에 부모 프로세스의 메모리를 복사한다. 2.fork()함수의 리턴값이 각기 다른 것을 이용하여 부모 프로세스와 자식 프로세스가 서로 .. 2020. 6. 6. [실습과 그림으로 배우는 리눅스 구조] 2.사용자 모드로 구현되는 기능 기본적으로 사용자 모드의 프로세스 처리부터, 시스템 콜을 통한 커널 처리를 호출하는 방식. 시스템콜 프로세스는 프로세스의 생성이나 하드웨어의 조작 등 커널의 도움이 필요한 경우 시스템 콜을 통해 커널에 처리 요청을 한다. 예) 프로세스 생성 , 삭제. 메모리 확보, 해제. 프로세스간 통신. 네트워크. 파일시스템 다루기. 파일 다루기. cpu의 모드 변경 시스템콜은 cpu의 특수한 명령을 실행해야만 호출된다. 프로세스는 보통 사용자 모드로 실행되고 있지만 커널에 처리를 요청하고자 시스템 콜을 호출하면 cpu에서는 인터럽트 이벤트가 발생한다. 인터럽트 이벤트가 발생하면 cpu는 사용자 모드에서 커널모드로 변경되며, 요청한 내용을 처리하기 위해 커널은 동작하기 시작한다. 요청한 내용처리가 끝나면 커널 내의 시.. 2020. 6. 5. [실습과 그림으로 배우는 리눅스 구조] 1.컴퓨터 시스템의 개요 컴퓨터 시스템이 동작할 때 하드웨어에서 반복되는 부분 입력장치 혹은 네트워크 어댑터를 통해서 컴퓨터에 무언가 처리 요청이 들어온다. 메모리에 있는 명령을 읽어 cpu에서 실행하고 그 결과 값을 다시 메모리의 다른 영역에 기록한다. 메모리의 데이터를 하드디스크나 ssd 등의 저장 장치에 기록 또는 네트워크를 통해 다른 컴퓨터에 전송하거나 디스플레이 등의 출력 장치를 통해 사람에게 결과값을 보여준다. 1번부터 반복해서 실행한다. 위와 같은 순서를 반복해서 사용자에게 필요한 하나의 기능으로 정리한 것을 프로그램이라고 한다. -어플리케이션 : 오피스 프로그램, 카톡, 인스타 등등 -미들웨어 : 웹서버, 데이터 베이스 등 -os : 리눅스, ms 등 리눅스의 중요한 역할은 디바이스를 조작하는 일이다. 리눅스 같은.. 2020. 6. 4. [운영체제 정리] 6.CPU 스케쥴링 개요 프로그램의 실행 1.프로그램이 실행될때, CPU와 I/O가 반복 사용된다. CPU를 사용하는 단계를 CPU 버스트, I/O를 사용하는 단계를 I/O 버스트라고 한다. CPU BURST TIME 분포 프로그램 실행시 CPU 바운드 잡, I/O 바운드 잡이 섞여있다. (그래프를 보면 CPU 잡과 I/O 바운드 잡이 섞여 있음) I/O 바운드잡은 사람과의 인터렉티브한 커뮤니케이션을 하기 때문에 CPU잡이 너무 많이 CPU를 갖고 있으면 I/O 바운드가 CPU를 잡지못하므로 사용자가 답답해 할 수 있다. 그래서 CPU 스케쥴이 필요하다. 프로세스의 특성 분류 프로세스는 특성에 따라 두가지로 나눔 I/O 바운드 프로세스: 키보드를 많이 칠때... CPU 바운드 프로세스: 계산을 많이 할때... CPU 스케쥴.. 2020. 6. 2. 이전 1 2 3 다음