-
[SW 정글 22일차] 내가 생각하는 추상화는?기타/SW 사관학교 정글 2021. 8. 24. 02:07
오늘은 컴퓨터 시스템책을 읽으면서 가장 많이 나오지만 개념을 잘 알고 있지 못하는 추상화에 대해 공부를 했다.
추상화라는 단어는 그냥 어떠한 것을 구체적이고 명확하게 나타내지 않고 뭔가 흐릿하게 혹은 간단하게 생각만을 옮겨놓은 것이라고 생각한다.
하지만, 이 추상화라는 단어가 컴퓨터 구조에서는 어떻게 적용되어서 쓰이고 왜 쓰이는지가 궁금했다.
<컴퓨터 시스템>에는 추상화라는 단어가 아래와 같이 쓰였다.
운영체제는 세 가지 근본적인 추상화를 제공한다.
(1) 파일은 입출력장치의 추상화다.
(2) 가상메모리는 메인 메모리와 디스크의 추상화다.
(3) 프로세스는 프로세서, 메인 메모리, 입출력 장치의 추상화다.
대충 문맥 상 A가 B를 추상화했구나라고 이해는 할 수 있지만 조금 더 명확하게 개념을 잡고자한다.
1. 추상화란?
먼저, 추상화의 사전적 정의를 알아보면 '추상적인 것으로 됨'이다.
여기서 추상이라는 것은 여러 가지 사물이나 개념에서 공통되는 특성이나 속성 따위를 추출하여 파악하는 작용이다.
사전적 정의만 봐서는 추상화를 컴퓨터 구조에 대입시키면 더 난해해진다.
컴퓨터 구조에서 쓰이는 추상화는 어떠한 대상에 대해 그것이 가져야 할 핵심적인 특징들을 단순화시켜서 표현한 것이라고 이해하면 될 것같다.
2. 추상화 적용시키기
추상화를 어떻게 컴퓨터 구조에 적용시키는지 알아보기 전에 우리와 조금 더 가까운 실생활에서의 예를 살펴보며 컴퓨터 구조에서의 추상화에 들어가보자.
우리는 지하철을 타고 원하는 목적지에 가기 위해서는 현재 나의 위치에서 가까운 지하철에 가서 지하철 노선도를 보고 어느 방향에서 타야하는지 결정하고 어느 역에서 내려야하는지 알 수 있다.
그런데 우리가 지하철을 타기 위해서 지하철이 시속 몇km로 가는지, 지하철의 구간 거리는 어떻게 되는지, 지하철은 어떻게 운전되는지 등을 알아야할까?
전혀 알 필요가 없고 우리는 지하철이라는 큰 그림을 추상화한 지하철 노선도만 보고도 우리의 목적인 지하철 타기를 성공할 수 있다.
그러면 이제 추상화를 컴퓨터로 끌어와 보자.
컴퓨터를 사용하는 사람은 컴퓨터 내부에서 어떻게 동작하는지, 데이터는 어떻게 가져오는지 등 알 필요없고 그냥 컴퓨터 켜고 마우스 클릭하고 키보드 입력만 하면 원하는 것을 얻을 수 있다.
추상화(Abstraction)에는 설계자(designer)와 사용자(user)가 있다.
우리와 같은 사용자는 컴퓨터를 설계한 사람들만이 아는 구체적인 것은 몰라도 된다는 것이 사용자가 접하는 추상화의 핵심이다.
3. 다시보기
이제는 내가 <컴퓨터 시스템>에서 봤던 추상화라는 단어를 다시보며 이해하고 넘어가려고 한다.
운영체제는 세 가지 근본적인 추상화를 제공한다.
=> 운영체제는 아래의 추상화의 설계자인 것이다. 사용자는 우리가 될 수있고 응용 프로그램이 될 수 있고 또 다른 무언가가 될 수도 있다.
(1) 파일은 입출력장치의 추상화다.
=> 파일은 입출력장치의 세부적인 내용, 중요 특징을 단순화시켜 표현한 것으로 사용자는 파일이라는 추상화를 사용해도 목적을 이룰 수 있고 입출력장치에 대한 구체적인 동작, 원리 등을 이해할 필요가 없다.
(2) 가상메모리는 메인 메모리와 디스크의 추상화다.
(3) 프로세스는 프로세서, 메인 메모리, 입출력 장치의 추상화다.
=> (1)과 마찬가지로 이해할 수 있다.
내가 오늘 공부하고 이해한 추상화라는 개념이 정답이라고는 할 수 없지만 대부분의 사람들이 말하는 추상화라는 것을 나만의 방식대로 내 것으로 만들었다고 생각한다.
[오늘의 나는 어땠을까?]
오늘은 하루가 빠르게 지나간 것처럼 느껴진다.
여느때와 다름없이 알고리즘 문제를 풀었는데 뭔가 그냥 시간이 훅 지나간 것같다.
그래도 이렇게 시간이 빠르게 지나갔지만 어제의 나보다는 무언가 배운 것이 있고 그만큼 조금이라도 성장했다고 생각한다.
SW 사관학교 정글에서는 slack을 이용하여 동료들, 운영진님들과 소통을 한다.
slack에 있는 잡담방에는 1기 수료생이 만든 식단Bot이 있다.
(식단Bot은 매일 00시에 카이스트 문지캠퍼스 구내식당 식단을 채팅으로 알려준다.)
식단Bot에 대한 소스파일은 1기 수료생의 깃허프에 오픈되어 있었고 2기 동료 중 한명이 이번 slack 잡담방에 적용시킨 것이다.
처음에는 코치님이 적용시킨 것인 줄 알았는데 알고보니 같이 공부하는 동료가 적용했다는 것이였고 놀라웠다.
오픈소스 파일을 가지고 와서 slack에 적용시킨 것이 놀라운게 아니라 이것을 행동으로 옮겼다는 것이 놀라웠다.
나도 식단Bot이 깃허브에 공개되어 있는 것은 알았고 어떻게 적용하는지 궁금했지만 지금 하고 있는 공부에 우선순위에 맞춰져있어 궁금증을 바로 해결하지 않고 기약없이 미뤘다.
하지만 내 동료는 분명히 나처럼 어떻게 하는지 궁금했을테고 이를 바로 행동으로 옮겼다는 것이 놀라웠고 대단했다.
동료를 보고 나도 어떠한 것이 궁금하고 알아보고 싶다면 곧바로 행동으로 옮겨보거나 당장 안된다면 정확한 계획을 잡아 궁금증을 해결하도록 노력해야겠다는 생각이 들었다.
정글에서는 정말 동료들에게도 배울 수 있는 부분이 많다고 생각한다.
실력이 아닌 이러한 작은 요소들까지도 나를 회고하게 되고 성장하게 해줄 수 있는 좋은 작용제이다.
<참고 자료>
https://namu.wiki/w/%EC%B6%94%EC%83%81%ED%99%94
https://black7375.tistory.com/6
'기타 > SW 사관학교 정글' 카테고리의 다른 글
[SW 정글 24일차] 플로이드 와샬 알고리즘이 궁금하다 (0) 2021.08.26 [SW 정글 23일차] 트라이 (Trie) 알아보기 (0) 2021.08.25 [SW 정글 21일차] 자료구조 복습하기 (0) 2021.08.23 [SW 정글 20일차] 위상 정렬 (Topological Sort) (0) 2021.08.22 [SW 정글 19일차] DFS와 BFS (0) 2021.08.21