분류 전체보기
-
[혼공컴운]동기화와교착상태카테고리 없음 2024. 3. 6. 20:37
운영체제 동기화란 ? 운영체제 동기화는 여러 프로세스나 스레드가 공유 데이터를 안전하게 처리할 수 있도록 보장하는 메커니즘입니다. 이는 경쟁 조건(Race Condition)이나 데이터 일관성 문제를 해결하여 프로그램의 정확성과 안정성을 유지하는데 도움이 됩니다. 경쟁 조건과 문제점 경쟁 조건은 여러 스레드나 프로세스가 동시에 공유 데이터에 접근할 때 발생하는 문제입니다. 이때 데이터의 일관성을 유지하지 못하면서 예기치 않은 결과가 발생할 수 있습니다. 동기화의 필요성과 목적 동기화는 경쟁 조건을 해결하고 공유 데이터의 일관성을 유지하기 위해 필요합니다. 이를 통해 여러 스레드나 프로세스 간의 데이터 접근을 조율하여 예기치 않은 결과를 방지합니다. public class Counter { private ..
-
[혼공컴운]스레드와프로세스CS지식/운영체제 2024. 2. 23. 13:43
프로세스(Process) 프로세스는 컴퓨터에서 실행되는 프로그램의 인스턴스라고 할 수 있습니다. 운영체제는 각 프로세스에게 독립적인 메모리 공간을 할당하고, 이 공간에서 프로세스는 코드를 실행하며 작동합니다. 프로세스의 메모리 공간은 크게 네 가지 영역으로 나뉘어져 있습니다: Code, Data, Heap, Stack입니다. Code 영역: 이곳은 프로그램의 소스 코드가 저장되는 곳입니다. 우리가 작성한 함수, 조건문, 반복문 등의 코드가 이곳에 위치하게 됩니다. Data 영역: 전역 변수나 정적 변수가 저장되는 공간입니다. 프로그램이 실행되는 동안 이 변수들의 값은 변할 수 있지만, 메모리 공간의 크기는 변하지 않습니다. Heap 영역: 동적으로 할당되는 데이터가 저장되는 공간입니다. 프로그래머가 필요..
-
[혼공컴운] 운영체제 시작CS지식/운영체제 2024. 2. 23. 12:16
Chapter 9. 운영체제 시작하기 운영체제란? 운영체제는 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고, 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임입니다. 운영체제는 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로서 동작하는 시스템 소프트웨어의 일종으로, 다른 응용프로그램이 유용한 작업을 할 수 있도록 환경을 제공해 줍니다. 운영체제를 공부하는 이유: 운영체제를 공부함으로써, 컴퓨터 시스템의 자원 관리 방법 등 다양한 정보를 습득할 수 있습니다. 이를 통해 현실에서 발생하는 문제에 대해 다양한 해결책을 모색할 수 있으며, 운영체제의 해결 방식을 통해 문제를 접근하는 방법을 배울 수 있습니다. 이러한 과정을 통해 다양한 시각과 문제해결 능력을 기를 수..
-
[python]네임스페이스 및 메모리 레퍼런싱Data관련/Python 2023. 10. 22. 13:33
파이썬은 모든 것을 객체로 다루는 언어입니다. 변수는 이러한 객체를 참조합니다. 이때 파이썬의 네임스페이스가 중요한 역할을 합니다. 네임스페이스는 변수 이름과 해당 변수가 참조하는 객체의 메모리 주소를 저장하는 테이블로 생각할 수 있습니다. X = 2023 위의 코드에서, X는 변수이며, 2023은 int 객체입니다. X는 2023이라는 int 객체를 참조하게 됩니다. 이때, 네임스페이스에는 다음과 같이 정보가 저장됩니다. 이름 레퍼런싱된 객체 메모리 주소 X 0x151dfe6a0b0 이후, 만약 Y = X라고 한다면, Y는 X가 가리키는 메모리 주소를 참조합니다. 즉, X와 Y는 동일한 객체를 가리키게 됩니다. Y = X 이름 레퍼런싱된 객체 메모리 주소 X 0x151dfe6a0b0 Y 0x151dfe..
-
[python]객체지향 프로그래밍 및 데이터타입Data관련/Python 2023. 10. 21. 22:53
파이썬은 많은 프로그래밍 언어 중 하나로, 객체 지향형적인 특징은 가지고 있는 언어입니다. 객체 지향 프로그래밍은 코드를 물건(객체)을 만들어 사용하는 방식으로 구조화하는 프로그래밍 패러다임입니다. 그럼 먼저 물건(객체)이란 무엇일까요? 물건(객체)이란? 물건 또는 객체(Object)은 사용 목적을 가지고 만들어진 것입니다. 이는 일상 생활에서 사용하는 물건과 유사한 개념입니다. 예를 들어, 펜은 글을 쓰는 목적을 가지고 만들어진 물건입니다. 펜은 잉크와 플라스틱으로 만들어져 있으며, 글을 쓸 때 잉크를 사용하여 글을 쓸 수 있도록 하는 스위치를 가지고 있습니다. 이 물건(객체)은 한 번 만들어지면 계속해서 사용할 수 있으며, 계속해서 사용하기 위해서는 새로 만들 필요가 없습니다. 파이썬은 이러한 물건(..
-
파이썬 인터프리터와 실행 과정 이해하기Data관련/Python 2023. 10. 21. 22:43
'인터프리터'는 파이썬의 핵심 중 하나입니다. 파이썬 코드의 실행 흐름을 간단히 살펴보겠습니다. Python Script → Compiler → Byte Code → Python VM(Mac/Windows/Linux) → Machine Code 파이썬 스크립트를 작성하면 컴파일러가 이를 받아서 바이트 코드로 변환합니다. 변환된 바이트 코드는 Python VM(Python Virtual Machine)을 통해 운영체제에 맞는 머신 코드로 다시 변환되어 실행됩니다. 파이썬 인터프리터란? 파이썬 인터프리터는 프로그램을 실행하기 위한 프로그램입니다. C언어나 Java 등 다른 언어로 작성될 수 있습니다. 파이썬 프로그램을 실행하려면 이 인터프리터가 필요합니다. 파이썬 스크립트를 작성하려면 텍스트 파일에 '.py..
-
프로그래밍 언어: 컴퓨터와의 대화의 시작Data관련/Python 2023. 10. 17. 21:38
컴퓨터는 0과 1로만 이해할 수 있으며, 이를 통해 우리가 일상 언어로 전달하는 지시를 이해할 수 있습니다. 이러한 컴퓨터와의 대화를 가능하게 하는 것이 바로 프로그래밍 언어입니다. 프로그래밍 언어의 기본 개념부터 시작하여, 고급 언어와 저급 언어의 차이, 그리고 중간 단계인 Mid Level Language에 대해 살펴보겠습니다. 1. 프로그래밍 언어란? 컴퓨터에게 지시하는 방법을 0과 1로 전달해야 합니다. 이러한 0과 1을 이용하여 특정한 회로를 선택하고 껏다 켰다 하며, 계산을 수행하고 데이터를 처리합니다. 하지만 이런 저수준의 언어로는 사람이 이해하기 어렵기 때문에, 프로그래머들은 이러한 저수준의 언어를 더 읽기 쉽고 이해하기 쉬운 언어로 변환해야 합니다. 이러한 변환 작업을 도와주는 것이 바로..
-
[Spring] 스프링 부트 살펴보기Backend/Spring 2023. 8. 15. 13:16
스프링 부트는 실무 환경에서 활용 가능한 독립실행형 애플리케이션을 빠르게 개발할 수 있도록 스프링 기반의 다양한 도구와 기술을 제공하는 플랫폼입니다. 이는 개발자들에게 복잡한 설정 고민 없이 빠른 개발을 도와주는 개념으로 큰 의미를 지닙니다. 스프링 부트가 아닌 스프링을 활용한 개발은 때때로 어떤 기능을 어떻게 활용해야 하는지에 대한 불확실성으로 인해 초기 진입이 어려울 수 있습니다. 이런 어려움을 해소하기 위해 등장한 것이 바로 스프링 부트입니다. 이 도구는 이러한 고민을 더 이상 걱정하지 않아도 된다는 안도감을 주는 역할을 합니다. 스프링과 스프링 부트는 서로 다릅니다. 게다가, 각각의 버전도 독립적으로 존재하며, 스프링 부트는 스프링의 버전을 결정하는 역할을 수행합니다. 스프링 부트의 핵심 목표 매..