CS/운영 체제 6

[운영체제] 리눅스 패키지(내가 맨날 헷갈린 apt쓸 때와 yum을 쓸 때)

(패키지라는 것이 무엇인지 알고 보는게 편하다. 이전 포스트를 보고오자. 리눅스에서는 리눅스 패키지라는 것이 존재한다. 리눅스 패키지란 리눅스 시스템에서 소프트웨어를 실행하는데 필요한 파일들(실행 파일, 설정 파일, 라이브러리 등)이 담겨 있는 설치 파일 묶음이다. 리눅스는 배포판에 따라 다른 패키지 형식을 지원한다. 여기에서 yum을 사용하는 경우와 apt를 사용하는 경우가 달라지게 된다. debian : ec2에서 사용하던 apt가 들어있다. 패키지는 .deb파일로 되어있다. 레드헷 : yum이 들어있다. 패키지는 .rpm파일로 되어있다. openSUSE : zypper이 들어있다고 한다. openSUSE를 위해 특별히 빌드된 패키지 형식이다. .rpm파일로 되어있다. if(rpm(레드헷) === r..

CS/운영 체제 2024.04.03

[운영체제] 패키지(리눅스 배포 패키지, npm)

개발을 하는 우리는 항상 리눅스를 사용한다. 그런데, 사람들의 블로그 포스팅을 보면 항상 이해되지 않는 한 가지가 존재했다. 왜 어떤 사람은 yum을 쓰고 어떤 사람은 apt를 쓸까? 이 질문에서 패키지라는 것을 학습해봐야겠다는 생각이 들었다. What is Package? 패키지는 소스코드 패키지, 바이너리 패키지로 분류된다. (저급언어/고급언어에 대해 안다면 이해가 쉬울 것 같다) 소스 패키지는 소스 코드로 이루어져 있는 패키지이다. 이를 읽고 실제로 컴퓨터에 적용시키려면 컴파일을 한 후 바이너리 코드를 컴퓨터에서 실행시켜야 한다. 그래서 설치가 더 오래걸린다는 단점이 존재한다. 또한, 하드웨어의 더 많은 저장공간을 차지한다고 한다. 그리고, 컴파일 에러가 발생할 수 있다는 단점이 있다. 바이너리 패..

CS/운영 체제 2024.04.03

[운영체제] 컴퓨터 구조 간단하게 정리해보기(부제. 왜 스왑 메모리가 느렸을까?)

컴퓨터 구조부터 시작해서 점점 깊이있게 파보려고 한다. 기본적으로 컴퓨터의 구조를 이야기해보라고 하면 넓게 CPU, 주기억장치, 보조기억장치, 입출력장치, 메인보드로 분류를 한다고 한다. CPU에서 연산과 명령들이 나오고 이걸 주기억 장치에 담아두거나 데이터를 가져오고, 보조기억장치에는 데이터를 저장, 삭제등을 진행하고 입출력 장치로 키보드 뚜따뚜따(?)하거나 마우스 딸깍하거나(그래서 내가하던 마비X기라는 게임에서 딸각충이라는 말들이 많았다. 키보드 안쓰고 마우스만 한번 누르면 된다고..) 해서 입력하고 모니터로 보거나 스피커등으로 듣는 입출력 장치가 있고 조립식 컴퓨터 사면 맨날 뭐 하나 잘못꽂아넣는 메인보드가 있다. 이정도는 나도 대충은 들어봤었다. 그렇다면 이들은 실질적으로 어떻게 맞물릴까? 내가 ..

CS/운영 체제 2024.03.15

[운영체제] 주소지정 방식!(이거만 하고 진짜 컴퓨터구조와 운영체제를 봅시다)

서론 실질적 하드웨어를 다루기 전에, 마지막으로 명령어와 주소지정방식에 대해서 정리해봐야겠다는 생각이 들었다. 이후의 기본 구조를 공부할 때 이 부분이 이해가 더욱 잘 되는 것도 있었고, 컴퓨터 구조의 기본을 공부할 때 오히려 이 부분을 알고보니 "아 이래서 이렇구나?"라는 생각이 더 공부하기 재밌었다고 느꼈기 때문이다. 또한, 이전의 소스코드의 어셈블리어의 파생내용이라고 생각했다. 0과 1로는 우리가 명령어를 다 외울 수 없다. 그렇다면 어셈블리어는 어떻게 쓰는걸까? 소스코드에서도 0과 1로 우리가 애플리케이션, 프로그램을 만드는 것은 너무 어렵다. 컴퓨터의 명령어도 마찬가지다. 우리가 학습하고, 필요에 따라 활용하기에는 어셈블리어가 더 이해가 쉽다. 이러한 어셈블리어는 어떻게 생겼고, 우리는 어떻게 ..

CS/운영 체제 2024.03.11

[운영체제] 소스코드 찍어먹기(부제 : 프로그래머스에서 js가 java보다 느린 이유?)

운영체제에서 무엇을 먼저 포스팅해볼까를 모르겠었다. 그래도, 개발하면서 제일 익숙한 코드와 관련된 부분부터 간단하게 정리하고 지나가는 것이 좋다고 생각했다. 일단 언어는 무엇이 있을까? 개발 트렌드에 있는 자바, 자바스크립트, 파이썬등이 있고, 컴퓨터 관련 전공 대학교 1학년들이 듣는(나때는 그랫어!) C언어가 있다. 확실히 배워보면 안다. 1학년때 C언어를 배우던 나는, 코딩이 이렇게 재미 없는건가 싶었다. 도대체 왜 공부하나 싶다. 그런데, 자바나 자바스크립트로 웹을 만들어보면 참 재밌다는 생각이 들었다. 둘의 가장 큰 차이가 뭘까? 사람이 쓰기 편하냐였다. 저급언어, 고급언어 저급언어와 고급언어가 가지는 차이점이 여기에서 보여진다. 저급언어는 컴퓨터가 직접 이해하고 실행할 수 있는 언어라면, 고급언..

CS/운영 체제 2024.03.06

[OS] 파일 시스템 (부제 : 익숙함에 속아 소중함을 잊지 말자)

파일 시스템이 무엇일까? 우리가 흔하게 쓰는 폴더 안에 폴더 안에 파일 몇개, 그리고 폴더 몇개, 그 폴더 안에 파일 몇개 폴더 몇개.... 끝도없이 구조를 만들 수 있다. 이런 구조를 어떻게 생각해냈고, 어떻게 접근하는걸까? 이거에 대해서 간단하게 공부해보았다. 일단, 폴더를 '디렉토리' 라는 명칭으로 파일 시스템이 이루어져 있다. 폴더는, 파일 시스템에서 부르는 디렉토리, 그 이상의 의미를 가진다. 파일 시스템에서, 파일들을 담으면서, 파일의 경로를 알려주는 디렉토리 이상으로 폴더는 역할을 가지고 있다. 폴더는 파일 시스템에서 다루지 않는 네트워크 환경등을 담고 있기 때문이다. 이를 알고, 디렉토리 & 파일로 파일 시스템을 이해해 보자. 파일 시스템은 디렉토리가 계층적으로 구조를 가지고 있다. 쉽게 ..

CS/운영 체제 2023.08.08