[운영체제] - 쓰레드 (Thread)
·
💻 Computer Science/운영체제
쓰레드 (Thread)프로세스가 생성되면 CPU 스케줄러는 프로세스가 해야 할 작업을 CPU에 전달하고 실제 작업은 CPU에서 진행된다. 이때 CPU 스케줄러가 CPU에 전달하는 실행 단위가 쓰레드이다. 즉, 쓰레드란 프로세스의 코드에 정의된 절차에 따라 CPU에 작업 요청을 하는 실행 단위이다. 운영체제 입장에서 작업 단위는 프로세스이고, CPU 입장에서 작업 단위는 쓰레드인 것이다. CPU와 프로그래밍 기술이 발전함에 따라 멀티 코어를 지원하는 CPU가 생겨갔고 멀티쓰레드를 지원하기 시작했다. 현대의 운영체제는 프로세스를 다양한 쓰레드로 나누어 여러 개의 코어에 배분하여 시스템의 효율을 높인다. 잠깐 쓰레드와 관련된 용어를 살펴보도록 하겠다. 헷갈리지 않도록 잘 정리하도록 하자.멀티쓰레드(Multi-..
[운영체제] - 프로세스 (Process)
·
💻 Computer Science/운영체제
프로세스 (Process)프로세스는 운영체제에서 하나의 작업 단위이며, 실행 중인 프로그램을 의미한다. 프로그램은 저장장치에 저장된 정적인 상태이고, 프로세스는 실행을 위하여 메모리에 올라온 동적인 상태를 말한다. 프로그램이 프로세스로 전환되기 위해서는 프로세스 제어 블록(PCB)이 필요하다. 프로그램이 프로세스가 되려면 운영체제로부터 프로세스 제어 블록을 덩어야 하고, 프로세스가 종료되면 해당 프로세스 제어 블록은 폐기된다.프로세스 구조프로세스는 코드 영역, 데이터 영역, 스택 영역으로 구성되어 있다.코드 영역(Code Area): 프로그램의 본문이 기술된 곳으로, 개발자가 작성한 프로그램은 코드 영역으로 탑재되고 읽기 전용으로 처리된다.데이터 영역(Data Area): 코드를 실행하며 사용하는 변수,..
[운영체제] - 컴퓨터 성능 향상 (Improve Computer Performance)
·
💻 Computer Science/운영체제
폰 노이만 구조 (Von Neumann Architecture)현대 컴퓨터는 대부분 "폰 노이만 구조"를 따른다. 이는 CPU, 메모리, 입출력장치, 저장장치가 버스로 연결된 구조로, 하드웨어는 그대로 두고 작업을 위한 프로그램만 교체하여 메모리에 올리는 방식으로 동작한다. 폰 노이만 구조에서 가장 중요한 개념은 바로 "모든 프로그램은 메모리에 올라와야 실행할 수 있다"는 것이다. 저장장치에 있는 프로그램을 실행하기 위해서는 프로그램이 메모리에 올라와야 하는 것이다. 운영체제 또한 프로그램이기에 메모리에 올라와야 실행할 수 있다. 컴퓨터의 전원을 켰을 때 운영체제를 메모리에 올려서 실행해야 하는데 이를 "부팅(Booting)"이라고 한다. 부팅 과정은 다음과 같이 이루어진다.사용자가 컴퓨터의 전원을 켜면..
[프로그래밍 언어론] - 객체지향과 다형성 (完)
·
💻 Computer Science/프로그래밍 언어론
프로그래밍 언어의 추상화 프로그램은 실세계의 대상을 컴퓨터에 나타내어 문제를 해결하기 위한 것이기에 반드시 추상화 과정이 필요하다. 지금부터 추상화가 무엇인지에 대해서 알아보도록 하겠다. 추상화 (Abstraction) 추상화는 복잡한 대상을 간략하게 나타내는 것을 말한다. 추상화는 코드를 더욱 간결하게 작성하고 이해하기 쉽게 만들어주어 개발자가 더욱 효과적으로 프로그램을 관리할 수 있도록 도와준다 추상화는 대상의 관심있는 부분만 추려내는 방법과 대상의 관심 없는 부분을 삭제하는 방법을 통하여 이루어진다. 프로그래밍 언어에서 제공하는 추상화 종류는 다음과 같다. 제어 추상화(Control Abstraction): 현실에서 복잡한 제어 과정을 하나 혹은 여러 개의 간결한 이름으로 나타내는 과정이다. 주로 ..
[프로그래밍 언어론] - 서브프로그램 (Subprogram)
·
💻 Computer Science/프로그래밍 언어론
서브프로그램 정의 서브프로그램(Subprogram)이란 독자적인 입력과 출력을 갖춘 프로그램 조각을 말한다. 프로그램이 사용자의 입력을 받아 처리를 거친 후 사용가 원하는 출력을 제공하듯, 서브프로그램은 다른 프로그램의 코드로부터 입력을 받고 다른 프로그램 코드에 출력을 제공한다. 이때 서브프로그램의 입력을 인수(Arguments)라고 하고, 서브프로그램의 출력을 반환값(Return Value)라고 한다. 다만 모든 서브프로그램이 인수를 받고 반환값을 내는 것은 아니다. 서브프로그램이 가지는 특징은 다음과 같다. 한 개의 입구: 서브프로그램으로 들어가는 입구는 단 한 개이다. 여러 개의 출구: 서브프로그램에서 나가는 출구는 여러 곳이 될 수 있다. 기본 출구와 반환: 서브프로그램의 맨 끝은 자동적으로 출..
[프로그래밍 언어론] - 문장 (Statement)
·
💻 Computer Science/프로그래밍 언어론
문장 (Statement) 문장은 처리를 나타내는 표현이다. 데이터를 처리하기 위하여 프로그램은 변수, 연산, 서브프로그램 등을 이용한다. 문장은 기본적으로 선언문과 실행문으로 분류된다. 선언문(Declaration Statement): 변수명과 타입 등을 바인딩하여 이후에 해당 변수에 이용할 수 있도록 한다. 실행문(Execute Statement): 실제로 변수, 서브프로그램 등을 이용하여 데이터를 처리한다. 지금부터 실행문에 해당하는 다양한 문장들을 알아보도록 하겠다. 대입문 (Assignment Statement) 프로그램에서 가장 자주 사용되는 문장으로 변수의 값을 변경한다. 대입 연산자를 이용하여 대입 연산자의 오른쪽 부분의 값을 대입 연산자의 왼쪽에 있는 변수의 값으로 대입한다. int A,..
[프로그래밍 언어론] - 표현식 (Expression)
·
💻 Computer Science/프로그래밍 언어론
표현식 정의 표현식이란 값을 나타내는 표현이다. 이때 값은 숫자 뿐만 아니라 문자열도 해당되며 이들을 나타내는 식을 표현식이라고 한다. 표현식은 피연산자와 연산자로 구성되어 하나의 값을 나타낸다. 표현식에는 피연산자와 연산자가 반드시 모두 포함될 필요는 없다. 피연산자(Operand): 데이터 표현 자체(리터럴) 자체일 수도 있고 값이 저장된 변수일 수도 있다. 연산자(Operator): 연산을 수행하는 함수로, 기본적인 사칙연산자와 함수와 같은 값을 반환하는 서브프로그램도 포함된다. 표현식과 연산자 표현식에서 사용하는 연산자는 아주 다양하다. 그 중 대부분의 프로그래밍 언어에서 기본적으로 제공하는 연산자들에 대해서 알아보도록 하겠다. 산술 연산자 (Arithmetic Operators) 산술 연산자에는..
loading