OS 관련 공부를 하던 중 기존에 내가 알던 가상메모리 내용과 다른 부분이 있어 혼란이 생겼다.
GPT와 질의응답하며 정리해보았다.
질문1. 가상메모리 기술에 대해 설명해줘.
가상 메모리(Virtual Memory)는 운영체제(OS)에서 물리적 메모리(RAM)의 한계를 넘어서는 프로세스에게 더 큰 주소 공간을 제공하는 기술입니다. 즉, 프로세스가 실제 메모리보다 더 많은 메모리를 사용할 수 있도록 해주는 기법이에요. 가상 메모리 기술은 디스크 공간을 가상의 RAM처럼 사용하는 방식으로, 실제 물리적 메모리의 용량이 부족할 때 디스크를 사용하여 메모리 부족 문제를 해결합니다.
가상 메모리의 주요 목적은 메모리 자원의 관리, 프로세스 간의 메모리 보호, 그리고 메모리 용량을 효율적으로 사용하는 것입니다. 이제 가상 메모리의 기본 개념과 동작 원리를 차근차근 설명할게요!
1. 가상 메모리의 개념
- 가상 메모리는 프로세스가 실제로 사용 가능한 메모리 크기보다 더 큰 주소 공간을 가지도록 해주는 기술입니다.
- 실제 메모리는 한정된 자원이지만, 가상 메모리 기술을 통해 디스크 공간을 보조 메모리로 사용하여 프로세스에게 더 많은 메모리를 할당할 수 있습니다.
- 프로세스는 가상 주소를 사용하며, 운영체제는 이 가상 주소를 물리적 주소로 변환하여 실제 메모리에서 데이터를 읽거나 쓰게 합니다.
2. 가상 메모리의 동작 원리
가상 메모리는 기본적으로 페이징(Paging)과 세그멘테이션(Segmentation) 기법을 활용하여 논리적 주소 공간과 물리적 주소 공간을 분리합니다. 가상 메모리는 두 가지 주요 방식으로 동작합니다:
(1) 페이징 (Paging)
- 페이징은 가상 메모리를 고정 크기 페이지로 나누고, 물리적 메모리도 프레임이라는 동일한 크기의 단위로 나누어 1:1로 매핑하는 방식입니다.
- 가상 주소는 페이지 번호와 오프셋으로 구성되며, 이 페이지 번호는 페이지 테이블(Page Table)을 통해 물리적 메모리 주소로 변환됩니다.
- 동작예시:
- 가상 메모리가 100MB이고, 페이지 크기가 4KB일 경우, 가상 메모리는 25,600개의 페이지로 나누어집니다.
- 각 페이지는 물리적 메모리의 프레임에 할당됩니다.
(2) 세그멘테이션 (Segmentation)
- 세그멘테이션은 프로세스를 논리적인 세그먼트로 나누고, 각 세그먼트는 크기가 동적으로 변할 수 있습니다. 예를 들어, 코드, 데이터, 스택 등으로 구분될 수 있습니다.
- 세그먼트는 논리적인 구조에 맞춰 다르게 할당되므로, 프로세스가 메모리를 효율적으로 사용할 수 있습니다. 세그먼트 테이블을 사용하여 세그먼트 번호와 오프셋을 기반으로 물리적 메모리 주소로 변환합니다.
3. 가상 메모리의 주요 특징
(1) 주소 변환 (Address Translation)
- 프로세스의 가상 주소는 물리적 메모리 주소로 변환되어야 합니다. 이 변환 과정은 페이지 테이블 또는 세그먼트 테이블을 통해 이루어집니다.
- 예를 들어, 가상 주소가 1MB라면, 이 주소가 물리적 메모리에서 실제로 어디에 위치하는지 변환하여 처리됩니다.
(2) 스와핑(Swapping)
- 가상 메모리 시스템에서 물리적 메모리가 부족할 때, 스와핑을 통해 디스크와 메모리 간에 데이터를 이동합니다.
- 스와핑은 프로세스나 데이터의 일부를 디스크로 옮기고, 메모리가 여유가 생기면 다시 메모리로 불러오는 과정입니다.
- 이 과정을 통해 물리적 메모리의 크기 제한을 극복하고, 여러 프로세스를 실행할 수 있게 됩니다.
(3) 페이지 교체 알고리즘 (Page Replacement Algorithms)
- 가상 메모리 시스템에서는 페이지를 디스크에서 메모리로 불러오는 과정에서, 메모리 공간이 부족하면 페이지를 교체해야 합니다. 이때 사용되는 알고리즘이 바로 페이지 교체 알고리즘입니다.
- FIFO (First-In, First-Out), LRU (Least Recently Used), Optimal 등의 알고리즘이 사용됩니다.
- 이 알고리즘은 어떤 페이지를 디스크에 쓸지 결정하는 방식으로, 효율적으로 메모리 공간을 관리합니다.
4. 가상 메모리의 장점
(1) 프로세스 격리
- 각 프로세스는 독립적인 가상 주소 공간을 가지므로, 한 프로세스가 다른 프로세스의 메모리에 접근할 수 없습니다. 이는 메모리 보호 기능을 제공하여, 프로세스 간의 충돌을 방지합니다.
(2) 메모리 보호
- 페이지 테이블이나 세그먼트 테이블을 통해 프로세스가 접근할 수 있는 메모리 범위를 설정하고, 잘못된 메모리 접근을 방지합니다.
(3) 메모리 효율성
- 가상 메모리 시스템은 메모리 공유를 가능하게 합니다. 여러 프로세스가 동일한 코드를 사용할 경우, 코드를 메모리에서 공유하여 메모리를 절약할 수 있습니다.
- 메모리 매핑을 통해 필요한 부분만 메모리에 불러오고, 사용되지 않는 데이터는 디스크에 저장하여 효율적으로 메모리를 사용할 수 있습니다.
(4) 프로세스 크기 확장
- 가상 메모리를 사용하면, 프로세스는 물리적 메모리보다 더 큰 주소 공간을 사용할 수 있습니다. 이로 인해, 시스템의 물리적 메모리가 부족해도 더 많은 프로세스를 실행하거나 큰 데이터를 처리할 수 있습니다.
5. 가상 메모리의 단점
(1) 성능 저하 (디스크 I/O)
- 디스크에서 메모리로 데이터를 불러오는 과정에서 디스크 I/O가 발생하기 때문에, 디스크가 느리기 때문에 성능 저하가 발생할 수 있습니다.
- 특히 스와핑이 자주 발생하면, 시스템 성능에 큰 영향을 미칠 수 있습니다.
(2) 메모리 오버헤드
- 페이지 테이블이나 세그먼트 테이블과 같은 데이터 구조를 관리하는 데 추가적인 메모리 공간이 필요합니다. 이는 메모리 오버헤드를 초래할 수 있습니다.
6. 결론
- 가상 메모리는 시스템의 물리적 메모리 용량을 넘어서 디스크 공간을 메모리처럼 활용하는 기술로, 프로세스 격리, 메모리 보호, 메모리 효율성 등을 제공합니다.
- 페이징과 세그멘테이션 같은 기법을 사용하여, 가상 주소를 물리적 주소로 변환하고, 스와핑과 페이지 교체 알고리즘을 통해 메모리 부족 문제를 해결합니다.
- 그러나, 디스크 I/O로 인한 성능 저하가 발생할 수 있으며, 메모리 오버헤드도 고려해야 합니다.
가상 메모리 기술은 현대 운영체제에서 필수적인 기술로, 시스템이 물리적 메모리 이상의 효율적이고 안전한 메모리 관리를 가능하게 해줍니다. 추가적으로 궁금한 점이나 더 알고 싶은 부분이 있으면 언제든지 물어보세요! 😊
사실 이게 일반적으로 알고 있는 개념일 것이다. 하지만 나는 학부 수업시간에 가상 메모리를 "메모리 공간을 페이징/세그멘테이션 등의 방법으로 추상화하여 사용자가 쉽게 이용 가능하도록 한 것"이라고 배운 바가 있다. 그러니까 내 머릿속의 그 개념에 의하면, 가상메모리는 우리가 흔히 OS책에서 볼 수 있는 메모리 구조와 관련된 그 그림(대충 긴 막대가 있고 일부분을 프로세스가 할당받고, 반환하고 하는 그런 느낌)처럼 표현되는 논리적 공간을 뜻하는 거였다. 배운지 오래되어 잘못 기억하고 있거나, 앞서 말한 가상 메모리와는 다른 개념일 수도 있다고 생각해 재질문하였다.
질문 2. 내가 시스템 프로그래밍 시간에 가상메모리를 배울때, 페이징과 세그멘테이션을 이용해서 물리적인 메모리를 사용자 입장에서 이용/생각하기 쉽게 추상화한 개념이라는 느낌으로 배웠는데, 반만 맞다고 볼 수 있나? 아니면 가상메모리에 다른 뜻이 또 있는거야?
당신이 배운 내용이 부분적으로 맞습니다. 페이징과 세그멘테이션을 통해 가상 메모리는 물리적인 메모리를 추상화하는 중요한 기술인데, 그 외에도 가상 메모리에는 다른 중요한 개념들이 있습니다. 이제 이 부분을 조금 더 명확하게 설명할게요.
1. 페이징과 세그멘테이션을 통한 추상화
맞아요! 페이징과 세그멘테이션은 사용자 입장에서 물리적인 메모리와 상호작용하는 방식에서 추상화를 제공하는 기법들입니다. 이 기법들은 가상 메모리의 주소 공간을 논리적으로 나누어, 사용자가 물리적 메모리의 제약을 신경 쓰지 않고 프로그램을 실행할 수 있게 해줍니다.
- 페이징은 메모리를 고정 크기의 페이지로 나누고, 물리적 메모리를 프레임으로 나누어 페이지 테이블을 통해 가상 주소를 물리적 주소로 변환합니다.
- 세그멘테이션은 프로세스의 논리적 구조(예: 코드, 데이터, 스택 등)에 따라 메모리를 세그먼트로 나누고, 이들을 세그먼트 테이블로 관리하여 물리적 메모리와의 매핑을 제공합니다.
이 과정에서 사용자는 물리적인 메모리의 크기나 위치를 신경 쓸 필요 없이, 자신만의 독립적인 가상 주소 공간에서 작업을 할 수 있게 됩니다.
2. 가상 메모리의 다른 중요한 의미
가상 메모리의 의미는 단순한 추상화를 넘어서, 메모리 보호, 효율적인 메모리 관리, 프로세스 격리 등의 목적을 가지고 있습니다. 즉, 가상 메모리는 사용자가 실제 메모리의 제약을 느끼지 않게 하고, 동시에 시스템 자원을 보호하고 효율적으로 관리하는 역할을 합니다.
(1) 프로세스 격리
- 가상 메모리는 프로세스 간의 격리를 가능하게 하여, 하나의 프로세스가 다른 프로세스의 메모리에 접근하는 것을 방지합니다. 이는 보안과 안정성을 크게 향상시키는 역할을 합니다.
- 예를 들어, 프로세스 A와 프로세스 B는 각각 독립적인 가상 메모리 공간을 가지므로, 한 프로세스가 다른 프로세스의 메모리에 영향을 미칠 수 없습니다.
(2) 메모리 보호
- 가상 메모리에서는 메모리 보호를 통해 잘못된 메모리 접근을 막을 수 있습니다. 예를 들어, 프로세스가 자신에게 할당되지 않은 메모리 공간에 접근하려고 하면, 운영체제가 이를 차단할 수 있습니다.
(3) 효율적인 메모리 관리
- 디스크 공간을 가상 메모리처럼 사용하는 스와핑 기법을 통해, 물리적 메모리가 부족할 때도 여러 프로세스를 동시에 실행할 수 있습니다. 이는 시스템의 메모리 사용을 효율적으로 최적화할 수 있게 합니다.
(4) 프로세스의 크기 확장
- 가상 메모리를 사용하면, 프로세스가 물리적 메모리보다 더 큰 메모리 공간을 사용할 수 있게 됩니다. 디스크를 보조 메모리처럼 사용하여, 실제 물리적 메모리의 제약을 넘어서 더 큰 프로그램을 실행할 수 있습니다.
3. 결론: 맞고 반만 맞고
당신이 배운 내용이 반은 맞고 반은 더 넓은 의미가 있습니다.
- 맞은 부분: 페이징과 세그멘테이션을 통해, 사용자 입장에서 물리적 메모리를 추상화하고, 물리적인 메모리 주소와 관계없이 가상 메모리 공간을 사용하게 만드는 기술입니다.
- 넓은 의미: 가상 메모리 기술은 메모리 보호, 프로세스 격리, 효율적인 메모리 관리와 같은 시스템의 전반적인 안정성과 보안을 강화하는 기술입니다. 또한, 물리적 메모리보다 더 많은 메모리를 사용할 수 있도록 도와주는 중요한 기술이기도 합니다.
즉, 가상 메모리는 추상화의 개념뿐만 아니라 시스템의 효율성과 안정성, 보안성까지 고려한 핵심적인 기술입니다. 그렇기 때문에, 가상 메모리는 단순히 추상화된 주소 공간 이상으로, 시스템 자원을 관리하는 중요한 역할을 합니다.
이해가 되셨나요? 추가적으로 더 궁금한 점이나 명확히 하고 싶은 부분이 있으면 언제든지 질문해주세요! 😊
답변을 들었지만 뭔가 확실하게 와닿지 않아서, 예전에 공부했던 자료를 뒤적여보면서 전에 필기해둔 한 가지 사실을 더 발견했고, 다시 질문했다.
질문 3. 가상메모리를 이용하면 물리적으로 연속적이지 않게 할당된 주소 공간도 연속적인 것처럼 보인다는데 맞아?
네, 맞습니다! 가상 메모리 기술을 사용하면 연속적이지 않게 할당된 주소 공간도 연속적인 것처럼 보이게 할 수 있습니다. 이게 바로 가상 메모리의 핵심적인 장점 중 하나입니다.
1. 가상 메모리의 주소 공간 추상화
가상 메모리의 가장 큰 특징은, 프로세스가 사용하는 가상 주소 공간을 물리적 메모리(RAM)와 디스크 공간이 어떻게 할당되었는지와 관계없이 연속적으로 보이게 만든다는 점입니다.
- 프로세스가 사용하는 가상 주소 공간은 연속적이고, 물리적 메모리가 비연속적이어도 운영체제가 이를 연속적으로 매핑할 수 있도록 도와줍니다. 즉, 물리적 메모리에 할당되는 위치와 관계없이, 가상 주소는 일관성 있게 연속적인 주소 공간처럼 보이게 됩니다.
2. 페이징(Paging) 기법과 연속 주소 공간 추상화
페이징은 가상 메모리에서 연속적이지 않은 물리적 메모리를 고정 크기의 페이지로 나누어, 가상 메모리 주소와 물리적 메모리 주소를 매핑합니다.
- 페이징 기법에서는, 물리적 메모리의 페이지와 프레임이 비연속적으로 할당되더라도, 가상 메모리는 연속적인 주소 공간처럼 보이게 할 수 있습니다.
- 예를 들어, 물리적 메모리의 3번째 페이지가 비어 있고, 4번째 페이지는 사용 중일 때, 가상 메모리의 3번째 페이지가 물리적 메모리의 1번째 페이지와 매핑될 수 있습니다. 그럼에도 불구하고 가상 메모리에서 볼 때는 이 주소들이 연속적인 것처럼 보이게 되는 것입니다. (<<< 이 예시는 무슨 말인지 제대로 이해 못했다. 대충 3, 4가 아니라 1, 4로 할당돼도 연속적인 것처럼 보이는것으로 이해함)
3. 가상 메모리에서의 주소 변환
가상 메모리 시스템에서는 가상 주소를 물리적 주소로 변환하는 과정이 필요합니다. 이 변환은 페이지 테이블 또는 세그먼트 테이블을 통해 이루어지며, 이를 통해 연속적인 가상 주소가 비연속적인 물리적 메모리에 매핑되게 됩니다.
- 예를 들어, 가상 주소 0번부터 4095번까지를 사용하는 프로세스가 있을 때, 이 프로세스는 연속적인 4KB 크기의 가상 주소 공간을 사용하지만, 실제로 이 가상 주소는 물리적 메모리의 어떤 페이지에 할당될지에 따라 비연속적인 물리적 주소로 매핑됩니다.
- 물리적 메모리에서는 페이지들이 비연속적으로 배치될 수 있지만, 가상 메모리에서는 연속적으로 보이게 할 수 있습니다. 이게 바로 가상 메모리의 추상화의 힘입니다.
4. 세그멘테이션(Segmentation) 기법과 연속 주소 공간 추상화
세그멘테이션은 프로세스의 논리적인 구분에 따라 메모리를 나누는 방식입니다. 예를 들어, 코드, 데이터, 스택 세그먼트로 나누어 각각의 세그먼트에 대해 독립적으로 메모리를 할당합니다.
- 세그먼트가 물리적 메모리에서 비연속적으로 할당될 수 있지만, 프로세스는 각각의 세그먼트가 연속적이고 독립적인 주소 공간처럼 다룰 수 있습니다.
5. 결론
- 가상 메모리는 물리적 메모리의 비연속적인 할당을 사용자에게 연속적인 주소 공간처럼 보이게 할 수 있는 기술입니다.
- 페이징 기법을 사용하면, 물리적 메모리가 비연속적으로 할당되어도 가상 메모리에서는 연속적인 주소 공간처럼 사용할 수 있습니다.
- 이를 통해 메모리 관리가 효율적이고 유연하게 이루어지며, 프로세스 격리와 메모리 보호 또한 가능해집니다.
즉, 맞습니다! 가상 메모리는 비연속적인 물리적 메모리를 연속적인 가상 주소 공간처럼 보이게 추상화하는 기술입니다.
궁금한 점이나 추가적인 설명이 필요하면 언제든지 말씀해 주세요! 😊
이 설명까지 듣고 나자, 나는 가상 메모리의 정의 자체에 대한 근본적인 의문이 생겼다. 가상 메모리의 특징이 이렇게 많은데, 단순히 "사용할 수 있는 메모리보다 더 크게 사용할 수 있게 해주는 것"이라고 해도 되는건가?
질문 4. 그러면, 종합해보았을때, 가상메모리 기술은 단순히 "실제 메모리가 부족해도 그보다 더 큰 주소공간을 갖게 해주는 기술" 이라고 하기엔 너무 좁게 정의 내린거 아니야? 조금 더 포괄적인 정의가 있어야 할거 같은데.
맞아요! 가상 메모리의 정의를 "실제 메모리가 부족해도 그보다 더 큰 주소 공간을 갖게 해주는 기술"로만 한정하는 것은 너무 좁은 정의일 수 있습니다. 가상 메모리의 기술은 단순히 메모리 크기를 넘어서는 여러 중요한 기능과 이점들을 제공합니다. 이 기술은 메모리 관리, 프로세스 보호, 효율적인 자원 할당과 관련된 중요한 개념들을 모두 포함하고 있기 때문에, 보다 포괄적인 정의가 필요합니다.
가상 메모리의 포괄적인 정의
가상 메모리는 물리적 메모리의 한계를 넘어서서, 프로세스마다 독립적이고 연속적인 주소 공간을 제공하며, 디스크와 같은 보조 기억 장치를 실제 메모리처럼 사용할 수 있게 하는 메모리 관리 기법입니다. 이를 통해 프로세스 간 메모리 격리, 메모리 보호, 효율적인 메모리 사용을 가능하게 하고, 프로세스 실행에 필요한 메모리 공간을 가상적으로 확장할 수 있습니다.
포괄적 정의에서 강조할 요소들
- 메모리 확장과 추상화
- 가상 메모리는 물리적 메모리의 한계를 확장하는 것뿐만 아니라, 사용자에게 연속적이고 독립적인 가상 주소 공간을 제공하여 물리적 메모리와 독립적인 프로그램 실행을 가능하게 합니다. 이를 통해 메모리 추상화를 제공하고, 사용자는 실제 메모리의 위치와 크기에 관계없이 프로그램을 실행할 수 있습니다.
- 프로세스 보호와 격리
- 각 프로세스는 자신만의 독립적인 가상 주소 공간을 가지며, 이를 통해 프로세스 간의 격리와 보호를 가능하게 합니다. 하나의 프로세스가 다른 프로세스의 메모리 영역에 접근할 수 없게 함으로써, 시스템의 안정성과 보안성을 높입니다.
- 효율적인 메모리 관리
- 가상 메모리는 디스크 공간을 메모리처럼 사용할 수 있게 하여, 실제 물리적 메모리가 부족할 때도 프로세스를 효율적으로 관리하고, 스와핑이나 페이징을 통해 메모리 자원을 최적화합니다. 물리적 메모리가 부족하면 디스크에 데이터를 임시 저장하고, 다시 메모리로 불러오는 방식으로 메모리 부족 문제를 해결합니다.
- 프로세스 실행에 필요한 메모리 공간 확장
- 가상 메모리는 디스크 공간을 활용하여 실제 메모리보다 더 많은 주소 공간을 프로세스에 할당할 수 있도록 하며, 이는 대형 프로그램이나 다수의 프로세스를 동시에 실행할 수 있게 합니다.
- 주소 변환과 페이지 테이블
- 가상 메모리에서 가상 주소는 페이지 테이블을 통해 물리적 주소로 변환됩니다. 이 과정을 통해 비연속적인 물리적 메모리를 연속적인 가상 주소처럼 사용할 수 있게 됩니다. 이는 외부 단편화 문제를 해결하고, 물리적 메모리의 효율적인 할당을 가능하게 합니다.
결론
따라서, 가상 메모리의 정의는 단순히 메모리 부족을 해결하는 기술이 아니라, 메모리 보호, 프로세스 격리, 효율적인 자원 관리, 그리고 프로세스에 독립적인 가상 주소 공간을 제공하는 중요한 기술로 볼 수 있습니다.
가상 메모리는 물리적 메모리와 디스크 공간을 효율적으로 결합하여 시스템 자원을 최적화하고, 안정성과 보안성을 강화하며, 프로세스가 필요한 만큼의 메모리 공간을 사용할 수 있도록 지원하는 핵심 기술입니다.
이렇게 가상 메모리는 그 역할이 단순히 메모리 크기를 늘리는 것에 그치지 않고, 시스템의 전반적인 효율성과 안정성을 높이는 중요한 기술이라는 점에서 보다 포괄적이고 중요한 개념입니다.
혹시 더 궁금한 점이나 더 알고 싶은 부분이 있으면 언제든지 질문해 주세요! 😊
이제야 좀 깔끔하게 정리된 것 같았지만, 일반적으로 내리는 정의가 무엇인지도 확실하게 알아두고 싶어서 마지막으로 질문을 했다.
질문 5. 이게 일반적으로 말하는 정의야? 아니면 내가 다시 정의하라고 해서 위에 내용 정리한거야?
위에서 설명한 가상 메모리의 정의는 제가 더 포괄적이고 정확한 설명을 위해 다시 정리한 내용입니다. 일반적으로 말하는 정의는 더 간단하게 설명될 수 있습니다만, 가상 메모리의 역할과 중요한 기능을 충분히 포괄하는 내용으로 다루고자 했습니다.
일반적으로 가상 메모리는 다음과 같은 간단한 정의로 설명될 수 있습니다:
일반적으로 말하는 가상 메모리의 정의
가상 메모리는 실제 물리적 메모리(RAM) 용량을 초과하는 메모리 공간을 제공하기 위해 디스크 공간을 활용하는 메모리 관리 기법입니다. 이 기술은 프로세스가 더 많은 메모리 공간을 사용할 수 있게 하며, 프로세스 간의 메모리 보호와 효율적인 자원 관리를 가능하게 합니다.
일반적인 가상 메모리의 특징
- 디스크를 보조 메모리로 사용하여 실제 물리적 메모리보다 더 많은 메모리 공간을 프로세스에 제공.
- 프로세스마다 독립적인 가상 주소 공간을 제공하여, 프로세스가 다른 프로세스의 메모리에 접근하지 못하도록 격리.
- 페이징과 스와핑 등의 기술을 사용하여 메모리 관리 최적화.
- 물리적 메모리 부족 시, 디스크에서 데이터를 불러와 사용.
정리하자면, 제가 제공한 포괄적인 정의는 가상 메모리의 모든 기능과 역할을 좀 더 깊이 있게 설명한 것이고, 일반적인 정의는 가상 메모리의 핵심 기능을 간단하게 나타낸 것입니다.
따라서, 일반적으로 말하는 가상 메모리의 정의와 제가 제공한 포괄적인 정의 모두 다양한 관점에서 가상 메모리를 설명하는 방법이라고 볼 수 있습니다. 물론 두 정의가 기본적으로 동일한 기술을 설명하고 있지만, 포괄적인 정의는 가상 메모리의 기술적 역할과 목적을 좀 더 자세히 다룬다고 할 수 있습니다. 😊
추가로 더 궁금한 점이 있으면 언제든지 물어보세요!
결국 원점 회귀하긴 했지만, 나름대로 머릿속에서 정리가 되었다!
'Computer Science > OS' 카테고리의 다른 글
03. 리눅스 활용 (1) | 2023.10.25 |
---|---|
02. 리눅스 이해(2) (0) | 2023.10.25 |
02. 리눅스 이해(1) (0) | 2023.10.25 |
01. 리눅스 기초 (1) | 2023.10.25 |