shopkeeper/korean_wiki_content_only_120125 huggingface dataset:
드라비다어족과의 관련을 주장하는 설도 있지만 이를 인정하는 연구자는 적다. 오노 스스무는 일본어의 어휘나 문법 등이 타밀어와 공통점을 지니고 있다는 설을 주장하지만 비교언어학의 방법상의 문제로 인해 비판이 많다.
아이누어는 어순(SOV형)에 있어서는 일본어와 유사하지만 문법과 형태는 유형론적으로 일본어와는 다른 포합어에 속하며, 음운 구조도 유성, 무성의 구별 없이 폐음절이 많은 등의 차이가 있다. 기초 어휘가 유사하다는 지적 도 있지만, 그 예시가 불분명하다. 일반적으로 일본어와 닮아있는 아이누어 중에는 일본어에서 아이누어로 간 차용어가 다수 포함되어 있는 것으로 보인다. 지금으로서는 계통적 관련성을 나타내는 자료는 부족하다.
한국어는 문법 구조와 유사한 점이 많지만 기초 어휘에 어느정도 차이가 난다. 음운면도 고유어에 있어서 어두에 유음이 오지 않는 점, 일종의 모음조화가 보이는 점 등 앞에서 언급한 알타이어족과 공통되는 유사점이 있는 반면, 폐음절이나 자음 연결의 존재나 유성 및 무성이 없는 점 등 한국어와 일본어와는 차이도 있다. 하지만 한반도 남부에 원시 일본어가 존재하였고 이것이 일본에 건너갔다는 것에 찬성하는 학자들이 있다. 또한 한반도의 사어인 고구려어의기록에 여러 유사한 점이 보인다.
류큐 열도의 언어는 일본어와 계통을 같이하는 언어 중 하나(“류큐어” 내지 “류큐어족”)로 간주해 일본어와 한데 모아 일본어족으로 보는 관점과 일본어의 방언 중 하나(“류큐 방언”)로 보는 관점이 있지만, 연구자와 견해에 따라 의견이 갈린다.
방언.
일본어는 크게 오사카와 교토를 중심으로 하는 서일본 방언()과, 도쿄와 요코하마를 중심으로 하는 동일본 방언(, 표준어 )으로 크게 양분된다. 이즈 제도 남부에는 고대어 표현이 많이 남는 독특한 방언이 있어, 하치조어()라고 불린다.
방언에 관한 일본국의 문헌적인 기록은 현존하는 일본국의 최고의 시가집인 만요슈에서 나오는데 여기에는 아즈마 지방(현재의 간토 지방)의 방언의 노래가 있다. 나라 시대에도 이미 나라 지방을 중심으로 중앙어와 그 외 지역의 방언에 대한 인식이 있었다고 한다. 일본국의 방언 연구는 에도 시대 때부터 본격적으로 이루어졌으며 메이지 시대를 거치면서 국가에 의한 연구가 진행되어 왔다.
특히 오사카의 방언은 지역색이 두드러지는 것으로 유명하다. 온화한 인상의 도쿄에서 주로 사용하는 표준어에 비해 오사카는 해상 교통이 있는 상업 도시였기 때문에 오사카 방언은 활발한 억양이 특징이다. 교토 방언은 ‘위쪽 말’()이라고도 하는데 수도가 오랫동안 교토에 있었다가 도쿄에 옮겨졌기 때문에 품위 있고 격조 높은 말로 여겨져 왔다.
도쿄 방언은 거의 표준어에 가깝기 때문에 표준어라고 오해하는 경우가 많지만 본래 에도 방언이라고도 불린 것으로 (히)와 (시)의 발음의 구별이 되지 않는 등 표준어와는 다르다. 홋카이도 방언도 거의 표준어에 가깝지만 특히 형용사 등에 홋카이도 특유의 방언이 포함된다.
발음.
닿소리.
일본어 음소는 /m/, /n/, /p/, /b/, /t/, /d/, /k/, /g/, /s/, /z/, /h/, /r/, /y/, /w/, /N/, /Q/가 있다.
악센트.
문자.
일본어에서는 보통 한자와 히라가나, 가타카나 등 세 종류의 문자를 주로 사용하여 표기되며, 그 밖에 로마자와 아라비아 숫자도 함께 사용한다. 이들 가운데 히라가나와 가타카나는 표음문자고, 한자는 표의문자이다.
전통적으로 메이지 시대 초반까지는 일본어의 맞춤법에서는 띄어쓰기를 사용하지 않고 히라가나만을 사용하거나 교육용 문서에서는 단어 사이에 공백을 사용하기도 하였다. 이외에도 구두점 등을 사용할 때도 서양의 문장 부호들(따옴표, 물음표, 느낌표, 온점 등)을 사용하지 않는 것이 기본이었다.
오늘날 현대에는 거의 대부분의 공문서와 사문서 모두 단락 부호로 (한국어 맞춤법의 ‘,’에 해당) 및 (한국어 맞춤법의 ‘.’에 해당)이 넓게 이용되고 있다. 1951년 10월 30일, 일본국의 국어심의회 건의 제3의 5의 주2에서는 ‘,’및 ‘.’를 사용하도록 가이드라인이 짜여졌지만 실제로는 거의 대부분 준수되고 있지 않다.
오십음도.
아래는 일본어의 오십음()이다. '[  ]'의 안은 국제 음성 기호(IPA) 표기이다.
한자의 발음.
일본어에는 본래 일본어의 고유어인 야마토 고토바가 있었고, 한자는 뒤에 중국에서 직접 전해지거나 혹은 한반도 서해안(특히 백제 또는 고구려)을 경유하여 전래되었다. 한자를 읽을 방법은 크게, 한자와 함께 전해진 한자 본래의 음에서 온 음독( 또는 )과, 그 한자와 같은 의미를 가진 야마토 고토바()의 발음을 적용시켜 발음하는 훈독( 또는 )으로 나눌 수 있다. 같은 한자도 음독이나 훈독이 여러 개 존재하는 경우도 있기 때문에 일본어에서는 하나의 한자에 여러 개의 발음이 있는 것이 대부분이다. “生”(날 생)에는 47종류의 발음이 있다.
예를 들어 한국어에서는 “水”(물 수)를 '수'라고는 읽지만 '물'이라고는 읽지 않는데, 그에 반해 일본어에서는 음독으로 '스이(すい)'라고도 읽고 훈독으로 '미즈(みず)'라고도 읽는다. 마찬가지로 한국어에서는 “金”(쇠 금, 성 김)을 '금'으로, 성씨로 쓰일 때 한정으로 '김'이라고는 읽으나, '쇠'라고는 읽지 않는데, 일본어에서는 음독으로 '킨(きん)' 혹은 '콘(こん)'으로도 읽고 훈독으로 '카네(かね)'라고도 읽는다.
한자의 위(세로쓰기에서는 오른쪽)에 작은 크기의 가나로 발음을 적은 것을 후리가나라고 한다. 후리가나를 붙일 때는 읽는 독음이 온요미인지 쿤요미인지 구별하기 위해서 온요미의 경우에는 가타카나로, 쿤요미의 경우에는 히라가나로 붙이는 게 정석이나, 구별이 필요하지 않는 상황에서는 상관없이 히라가나로 표기하기도 한다. 만요슈에는 한자를 차용하여 표음문자처럼 이용한 만요가나가 사용되었다.
이로하 노래.
일본어와 가나를 외우기 위한 방법으로 이로하 노래()가 있다. 여기에는 "을 제외한 모든 글자가 한 번씩 들어 갔으며, 일부 변형에는 "도 들어가기도 한다. 과거에는 이 노래의 순서대로 가나의 순을 매기기까지 했었고 현재까지도 종종 쓰인다. 이런 종류의 문장을 팬그램이라 부른다.
기본 표현.
다음은 일상적으로 자주 쓰이는 일본어 표현들이다. 로마자 표기는 헵번식 로마자 표기법을 따른다.
역사적으로 한국과 일본은 7세기 이전에도 교류가 있어서 일본어를 접한 건 오래되었다. 일제강점기에는 강제로 교육시키기도 했다. 한국에서 일본어 교육이 시작된 것은 조선 말기이나, 본격적으로 시작된 것은 정부 수립 이후였다. 1970년대 초에 고등학교 교과목에 일본어가 제2외국어 중 하나로 추가되었고, 2001년에는 '생활 일본어'가 중학교 교과목에 포함되었다. 현재 대한민국의 대학 수험생들은 수능에서 일본어 I을 선택할 수 있다.
허수(虛數, )는 실수가 아닌 복소수를 뜻한다. 기호는 formula_1를 사용한다.
실수의 특성상, 제곱하면 무조건 0 또는 양수가 되기 때문에 이차방정식 formula_2에서는 실수의 범위에서 해를 전혀 구할 수가 없다. 또한 수직선에 모든 실수를 하나하나 대응시키면, 수직선은 빈틈없이 채워지는 것으로 볼 때, 우리가 존재한다고 느낄 수 있는 수는 실수밖에 없다는 것은 필연코 부정할 수 없는 사실이다.
여기서 formula_2 꼴과 같이 실수 범위에서 전혀 구할 수 없는 해를 구하기 위해 무엇인가를 만들어야 할 필요성을 느낀다. 실수의 성질로는 불가능한 제곱해서 음수가 되는 수를 만들어내기 위해 제곱하여 -1이 되는 수 formula_4를 만들어내면, 위의 이차방정식의 해는 formula_5또는formula_6이 되므로 이 수는 우리가 존재한다고 느끼는 수가 아님에도 불구하고, 이차방정식의 해가 되기 때문에 수학자들은 이 수가 수학적 가치가 있음을 인정하고 허수로 정의했고, formula_4만 있으면 모든 허수들을 나타낼 수 있으므로 이 수를 imaginary number의 앞글자를 따서 허수 단위 formula_1라고 정의했다.
복소수는 실수와 허수를 포괄하는 수이며, formula_9 (단, a, b는 실수)로 나타낼 수 있고, 이때 a를 실수부, b를 허수부라고 한다.
허수가 정의되기 전까지만 해도, 수의 개념은 1차원적이었다. 즉, 수의 개념은 오직 수직선으로만 표현되었다. 그러나 허수가 정의된 후, 수의 개념은 2차원으로 확장되었다. 즉, 수의 개념은 복소평면으로 표현된 것이다. 수의 틀을 직선에서 평면으로 확장시킨 것은 모두 허수의 덕택임을 알 수 있다.
고대 그리스의 수학자 헤론은 거듭제곱하여 음수가 되는 수에 대한 개념을 기록한 바 있다. 1572년 이탈리아의 수학자 라파엘 봄벨리가 허수 단위를 정의하였다. 이후 르네 데카르트가 《방법서설》의 부록 〈기하〉()에서 상상의 수(imaginary numbers)라고 부른 데에서 허수라는 이름이 정착되었다. 허수라는 이름은 레온하르트 오일러와 카를 프리드리히 가우스에 의해 널리 알려졌으며, 오일러는 허수 단위 기호로 formula_1를 도입하였다. 또한 오일러는 이것을 방정식formula_11 일 때 이 방정식을 만족하는 정수해는 없다는 것을 증명할 때 사용하였다. 1799년 카스파르 베셀이 복소수의 기하학적 표현을 완성하였다.
미국 수학에서 허수란 formula_12 형태, 즉 순허수이다. 즉 실수에 허수단위 formula_13가 곱해진 형식을 가지고 있고, 따라서 제곱하면 음수가 된다.
기하학적 해석.
한 평면상에 데카르트 좌표계를 정하고 이에 대한 한 점 Z의 위치 (x, y)를 formula_14로 정하여 복소수를 평면상의 점으로 표시할 수 있다. 이 때, 좌표와 복소수는 일대일 대응을 이룬다. 또한, 이렇게 나타낸 점 Z(x,y)는 극좌표를 사용하여 원점에서부터 점 Z 사이의 반지름과 각도로서도 나타낼 수 있다. 즉,
한편, 왼쪽의 그림과 같이 실수부는 같고 허수부의 부호만 반대인 formula_16 와 formula_17를 생각할 수 있다. 이를 켤레복소수(복소켤레)라고 한다. 켤레 복소수는 극좌표에서 반지름이 같고 x축에 대해 대칭인 점이 된다.
수 체계.
수 체계에서 허수는 복소수와 함께 다루어지는 것이 보통이다. 이를 복소수체라고 하며 formula_20 로 나타낸다.
선형대수학(線型代數學, )은 벡터 공간, 벡터, 선형 변환, 행렬, 연립 선형 방정식 등을 연구하는 대수학의 한 분야이다. 현대 선형대수학은 그중에서도 벡터 공간이 주 연구 대상이다. 추상대수학, 함수해석학에 널리 쓰이고 있다.
선형대수학은 자연과학과 공학에도 널리 활용된다. 선형 연립방정식을 푸는 좋은 방법으로는 소거법과 행렬식이 있다.
기초.
선형대수학은 2차원 혹은 3차원의 데카르트 좌표계에 대한 연구로부터 시작되었다.
선형성.
formula_1(formula_2는 상수를, formula_3는 변수를 가리킨다)
이와 같이 선형성은 변수의 지수승(formula_4)을 가리키는 것이 아니라 일차함수(formula_5)와 같은 형태를 가리킨다. 선형과 대립되는 개념으로 비선형이 있는데, formula_6 등 일차함수와 같은 형태의 성질을 만족시키지 않는 함수들을 가리킨다. 선형의 직관적인 이해는 일차함수와 동일시해서 생각해도 좋다. 하지만 선형의 엄밀한 의미는 일차함수보다 더 확장된다. 수학적으로 정확한 선형의 설명은 다음과 같다.
(정의) 정의역 formula_7에서 임의의 원소 formula_8를 치역 formula_9에 대응시키는 연산 formula_10는 다음과 같은 성질을 만족시킬 때 "선형"이라고 한다. 여기서 c는 임의의 상수이다.
예를 들어 일차함수 formula_13를 생각해보자. formula_14로 (1)번 조건을 만족시키고 formula_15로 (2)번조건을 만족시킨다. 그러므로 이 함수는 선형이다. 이차함수 formula_16의 경우에는 formula_17로 조건을 만족시키지 않는다. 다른 선형연산의 예로는 회전변환, 원점을 지나는 직선에 대한 대칭변환, 어떤 벡터 공간에 대한 수직입사 등이 있다.
"선형"이라는 성질은 행렬과 동전의 양면과 같은 관계를 가지고 있다. 어떤 연산이 선형이라면 그것은 행렬로 표현이 가능하며, 어떤 행렬은 반대로 어떤 선형연산으로 해석될 수 있다. 이 선형대수학의 행렬이론은 수학의 이론뿐만 아니라 물리학, 전자공학, 컴퓨터 그래픽, 기계공학 등에 널리 쓰이고 있다.
학부과정.
학부과정에서 가르치는 선형대수학의 내용들은 다음과 같다. 다만 이 내용은 일반적으로 이와 같이 가르치는 내용이며 각 학교마다 비중있게 다루는 부분이 다를 수 있고 내용을 추가하거나 뛰어넘을 수 있다.
선형대수학에 관한 가장 오래된 기록은 고대 바빌로니아인들이 기원전 4세기 경에 선형연립방정식으로 이어지는 문제들을 연구한 기록이다. 현존하는 문헌 중에 가장 오래된 것은 한(漢)왕조 때인 BC 200년에서 BC 100년 사이에 쓰여진 &lt;구장산술(九章算術)&gt; 제8장「방정(方程)」장으로, 여기에 행렬에 관한 문제를 다루는 해법인 방정술(方程術)이 소개되어 있다. 이외에도 중국에서 다양한 기록이 있으며, 최소한 동양에서는 2세기 이전부터 선형대수학 연구가 시작되었다. 「방정」장 원본을 현대 선형대수학의 용어로 라이프니츠(G. W. Leibniz, 1646-1716),세키 고와(Seki Kowa, 関孝和, 1642-1708), 가우스(J. C. F. Gauss, 1777-1855)와 연결하여 구체적으로 서술한 논문에 따르면,이 책에서 방정장의 영부족(贏不足, excess and deficit)을 이용하는 두 개의 미지수를 갖는 두 개의 방정식의 해법과 방정장의 대부분을 정확하게 복원하였으며, n+1개의 미지수를 갖는 n개의 방정식을 복원하여 행렬식 계산(determinantal calculation)의 가장 오래된 기록임을 확인하였다.
선형대수학의 기초가 되는 행렬과 행렬식에 대한 연구는 모두 선형연립방정식의 연구에서 비롯되었다. 흥미로운 것은 행렬의 개념이 행렬식의 개념보다 훨씬 나중에 소개되었다는 것이다. 행렬식의 개념은 일본인 세키 고와가 1683년에 처음 소개했으며, 2×2, 3×3, 4×4, 5×5행렬의행렬식을 구하는 방법을 찾아서 방정식의 해법을 구했다. 유럽에서는 행렬식의 개념이 1683년 라이프니츠에 의하여 소개된 것으로 알려져 있다. 더 나아가 그 이전에 가우스에 의하여 알려졌다고 주장하는 의견도 있다. 그러나 기록에 의하면 서양에서는 1693년 라이프니츠가 로피탈(L'Hôpital)에게 보낸 편지에 비로소 처음 소개되었다. 라이프니츠는 1700년과 1710년에 발표한 논문에서 소개한 계수행렬에 관한 연구를 통하여, 현재의 크래머(Cramer)공식에 이르는 기본 원리와 현대에서 라플라스(Laplace) 여인자 전개식이라 불리는 것의 기초를 닦았다.
근대 선형대수학의 이론적 발전은 뫼비우스에 의하여 본격적으로 시작되었다. 뫼비우스는 1827년 자신의 책 ‘Barycentric Calculus’에서 기하학적 대상(점)들을 가지고 직접 연산을 하는 최초의 대수적 체계를 소개하였고 동일 직선상의 선분을 어떻게 더하는지 보였다. 그러나 이에 관한 여러 어려움이 있었다. 이에 대한 답을 처음으로 준 수학자가 바로 그라스만이다. 그라스만은 베를린에서 수학이 아니라 신학과 철학을 공부하고 귀향하여 교사가 되었다. 그라스만은 1830년대 초부터 수학기초론을 공부하며 선형대수학을 발견하게 되었다. 그라스만은 1844년 자신의 첫 번째 책 ‘lineale Ausdehnungslehre (Extension)’에서12쪽의 서문과 16쪽의 서론에 걸쳐 자신의 저술 의도에 대하여 철학적으로 자세히 설명했다. 여기서 보인 완전히 추상적인 접근은 ‘n차원 공간’과 ‘교환법칙이 성립하지 않는 곱셈’이라는 새로운 수학적인 아이디어를 제공했다. 1844년 그라스만은 또한‘벡터들 사이의 내적(inner product)’을 정의하여 ‘벡터대수(vector algebra)’를 연구하였다. 행렬 대수는 행렬곱셈을 곱셈 연산으로 하는 벡터대수의 일반화로 볼 수 있는데, 벡터의 내적은 행렬 중 특별한 경우인 1×n 행렬과 n×1 행렬의 곱셈으로 생각할 수 있기 때문이다. 따라서 벡터대수는 행렬대수의 특별한 경우임을 알 수 있다. 그러나 그라스만이 제시한 새로운 대수적 체계를 서술하는 혁명적인 아이디어와 난해한 기술방법은 큰 장애가 된다. 가우스는 1844년 12월에 그라스만에게 쓴 편지에서 “독자에게 익숙한 용어를 사용할 것”을 권고하고 있으며,뫼비우스가 1846년 1월에 아펠트(E. F. Appelt, 1812-1859)에게 쓴 편지에서는 “그라스만의 책은 이해하기 어려워서 한 페이지를 넘길 수가 없었다.”고 썼다. 또 엥겔(F. Engel, 1861-1941)은 18권의 ‘Gesammelte(전집) Werke, Band 3’에서 그라스만의 업적을 실으면서 그의 업적과 출판이 어디서도 주목받지 못했음을 서술하였다. 그럼에도 불구하고 그라스만은 자신의 방법에 확신을 가지고 책을 다시 쓰기 시작하여 1861년 10월에 수정을 마치고, 1862년 ‘The second Ausdehnungslehre’ 300 권을 모두 자신의 비용으로 인쇄했다. 이 책은 철학적 설명 없이 모두 정의-정리-증명(definition-theorem-proof)형식으로 썼는데(Fearnley-Sander, 1979), 여기서 제시한 내용 전체를 모두 그라스만이 처음으로 발견한 것은 아니지만 당시에 벌써 선형대수학의 거의 모든 주요 내용을 이해하고 정리한 그 완성도는 정말 놀랄 만하다. 그가 다룬 선형대수학의 내용을 현대적 용어로 쓰면 다음과 같다.
‘일차독립, 차원, 부분공간, 정사영, 좌표변환, 내적과 외적, 선형연립방정식의 해법, 직교, 선형변환, 선형변환의 행렬표현, rank-nullity 정리, 고유값, 고유공간, 특성방정식, 행렬의 대각화, 행렬분해, law of inertia, 미분방정식에의 응용, … ’
이후 1888년 페아노가 그라스만의 업적을 소개하고, 1918년 와일이 이를 한번 더 인용하면서 선형대수학에 대한 본격적인 연구가 시작되었다. 이 다음은 실베스터, 케일리 등 저명한 여러 수학자들의 연구를 거치면서 현대 선형대수학의 형태에 이르게 되었다.
컴퓨터 과학에서 커널()은 컴퓨터 운영 체제의 핵심이 되는 컴퓨터 프로그램으로, 시스템의 모든 것을 완전히 제어(control)한다. 운영 체제의 다른 부분 및 응용 프로그램 수행에 필요한 여러 가지 서비스를 제공한다. 핵심(核心)이라고도 한다.
커널의 역할.
초기의 커널.
초창기의 컴퓨터에서 운영 체제 커널은 필수적인 것이 아니었다. 초기의 프로그램은 하드웨어 추상화나 운영 체제의 지원을 받지 않고도 컴퓨터만으로 불러들인 다음 실행될 수 있었으며, 이것은 초창기 컴퓨터들의 일반적인 운영 방식이었다. 다른 프로그램을 실행하기 위해서는 컴퓨터의 전원을 껐다가 켬으로써 다시 입력자료를 읽어들여야 하는 방식이었다. 이러한 과정이 반복되면서 사람들은 로더와 디버거 같은 작은 프로그램들이 상주해 있는 것이, 다른 프로그램으로 교체하거나 새로운 프로그램을 개발하는 데 유리하다는 사실을 알게 되었다. 이와 같은 로더, 디버거들이 초기 운영 체제 커널의 기초가 되었다.
단일형 커널.
단일형 커널은 하드웨어 위에 높은 수준의 가상 계층을 정의한다. 높은 수준의 가상 계층은 기본 연산 집합과 관리자 모드에 작동하는 모듈인 프로세스 관리, 동시성, 메모리 관리 등의 운영 체제 서비스를 구현하기 위한 시스템 콜으로 되어 있다.
이 연산들을 제공하는 모든 모듈이 전체로부터 분리되어 있더라도 모든 모듈이 같은 주소 공간에서 실행되기 때문에 코드의 집적도는 매우 조밀하며 수정하기 어렵고 한 모듈의 버그는 시스템 전반을 멈추게 할 수 있다. 그러나 구현이 신뢰할 수 있을 정도로 완성되면 구성 요소의 내부 집적이 내부의 시스템 이용을 효과적이게 하여 좋은 단일형 커널은 높은 효율을 보인다. 단일형 커널의 지지자들은 코드의 정확성 여부와 그런 코드(부정확한 코드)가 커널에 포함되었는지를 확인할 수 있고 그것은 마이크로커널에 비해 조금 더 우위에 있다고 주장한다.
리눅스, FreeBSD, 솔라리스와 같은 최신의 단일형 커널은 실행 모듈을 실시간으로 읽어들일 수 있다. 실시간으로 실행 모듈을 읽는 특징은 커널이 허용하는 범위 내에서 손쉽게 확장할 수 있게 커널 공간의 코드의 양을 최소한으로 유지시켜 준다.
마이크로소프트 윈도우 NT 제품군(NT, 2000, XP, 2003, 비스타,7,8,8.1,10)은 처음에는 혼합형 커널이었으나 나중에 나온 것들은 단일형 커널로 바뀌었다. 윈도우 NT 시리즈는 상위의 서비스들을 NT executive이라는 서버로 구현하였다. Win32 특성은 처음에는 사용자 모드의 서버 형태로 구현되었으나, 최근 버전에서는 관리자 주소 영역으로 이동하였다. 다양한 서버들이 로컬 프로시저 콜(LPC: Local Procedure Call)이라 불리는 주소 영역간 매커니즘을 통해 통신하며, 성능을 최적화하기 위해 공유 메모리를 이용한다.
마이크로커널.
마이크로커널은 하드웨어 위에 매우 간결한 추상화를 정의한다. 기본 연산 집합과 운영 체제 서비스를 구현한 스레드 관리, 주소 공간, 프로세스간 통신의 작은 시스템 콜으로 이루어져 있다. 일반적으로 커널이 제공하는 네트워킹과 같은 다른 서비스들은 사용자 공간 프로그램인 서버로 구현한다.
운영 체제는 서버를 다른 일반적인 프로그램처럼 간단히 시작하고 끌 수 있다. 이를테면 네트워킹 지원이 필요 없는 작은 시스템에서는 간단히 서버를 끄면 된다. 이 경우 전통적인 시스템에서는 재컴파일이 필요했고 일반 사용자의 능력 밖의 일이다. 이론적으로 마이크로커널에서 시스템은 더 안정적이다. 서버가 중단될 때 커널의 충돌이 아니기 때문에 단 하나의 프로그램만 내려버리면 된다.
그러나 서버가 실패한 후 시스템 상태도 잃어버릴 경우 응용 프로그램이 계속 수행되는 것은 그 응용 프로그램이 막 복사된 다른 서버를 이용하게 되더라도 보통은 매우 힘들다. 예를 들어 TCP/IP 연결을 요구하는 (이론적인) 서버가 다시 시작되면 응용 소프트웨어는 연결이 "끊어졌습니다."라고 말하고 서버의 새 인스턴스를 찾아서 다시 연결한다. 그러나 파일과 같은 다른 시스템 객체는 이렇게 편리한 의미론이 없다. 이러한 편리가 믿음직스럽지 못하고 마음대로 이용할 수 없다. 기록할 정보들은 모두 미리 보관해 두어야 한다. 서버 간의 하나의 서버를 다시 시작할 때 중요 상태를 보호하기 위해 트랜잭션, 복제, 대조점의 데이터베이스 기술이 요구된다.
일반적으로 마이크로커널은 전통적인 디자인의 수행을 잘못하고 때로는 극적이다. 이유는 응용과 서버 간의 자료 교환을 위해 커널을 출입하는 문맥 교환 때문이다. 주의 깊은 조율이 오버헤드를 극적으로 줄여줄 것으로 믿어져 왔으나 90년대 중반부터 대부분의 연구원들은 시도를 포기했다. 최근에 새 마이크로커널은 성능을 최우선으로 설계하며 이 문제를 넓은 부분에서 다루었다. 그러나 현재 운영 체제 시장은 자기 몸 사리며 마이크로커널 설계에 소극적이다.
혼합형 커널은 본질적으로 마이크로커널을 따르나, 일부 커널의 비(非)본질적 기능이더라도 사용자 레벨에서 수행될 때 성능상 느린 코드들을 커널 레벨에서 수행하도록 수정한 것을 말한다. 이는 다양한 운영 체제 개발자들이 마이크로커널 기반의 설계를 받아들이던 시점에 순수한 마이크로커널의 성능상의 한계를 인식하고 타협한 결과이다.
예를 들어, macOS의 커널인 XNU는 Mach 커널 3.0 마이크로커널에 기반을 두고 있지만, 전통적인 마이크로커널 설계의 지연 현상을 줄이기 위해 BSD 커널의 일부 코드들을 들여와 동일한 주소 영역에서 실행하고 있다.
DragonFly BSD는 첫 번째 비 Mach 기반의 BSD OS로 혼합형 커널 구성을 적용한 예이다.
혼합형 커널이라는 말을 부팅 후에 모듈을 읽어들일 수 있는 단일형 커널과 혼용하는 사람들이 있다. 이것은 사실이 아니다. 혼합형 커널은 단일형 커널과 마이크로커널 설계 양쪽의 구조적 개념과 작동방법에 대한 특히 메시지 전달과 어떤 중요하지 않은 코드는 사용자 공간에 들어가는 반면 어떤 코드는 성능의 이유로 커널 공간에 포함해야 하는지에 대한 문제의식을 가진다.
엑소커널.
엑소커널은 운영 체제 설계에 대한 급진적인 신개념으로 말단 이론을 따르는 수직 구조의 운영 체제이다. 엑소커널의 구상은 개발자에게 강제적인 추상화를 줄여 하드웨어 추상화에 대해 선택지를 다양하게 하는 것이다. 엑소커널은 기능이 보호를 보장하는 것과 자원을 분배하는 것만 하기에 매우 작아 편익보다 단순함을 제공한다. 이런 특성은 오히려 모든 사용자가 각기 실제 호스트 컴퓨터의 자원을 모방한 컴퓨터를 받는 VM/370 운영 체제와 비슷하다. 반면에 모놀리식 커널이든 마이크로 커널이든 전통적인 커널 설계는 하드웨어 추상화 계층(HAL)이나 장치 드라이버 아래 자원을 숨김으로써 하드웨어를 추상화한다. 한 예로 전통적인 시스템에서 물리 메모리가 할당할 때 실제 위치를 알려주지 않기 때문에 오프셋과 기억 관리 장치를 통해서만 문제를 해결할 수 있다.
노커널.
TUNES Project 와 UnununiumOS 는 노커널 실험이다. 노커널 소프트웨어는 단일 중앙 입구의 제약이 없다.
1990년대 초기 모놀리식 커널은 진부한 것으로 여겨졌다. 리누스 토르발스와 앤드류 타넨바움간에 일어난 리눅스의 설계인 모놀리식 커널과 마이크로커널에 대한 프레임 워는 유명했다.
두 진영의 성공 사례가 있다. 모놀리식 커널은 정확한 설계가 쉽고 마이크로커널 기반 시스템보다 빨리 성장할 수 있다. 반대로, 마이크로커널은 종종 임베디드 로봇 산업이나 의료 컴퓨터 등에 이용될 수 있다. 운영 체제의 컴포넌트를 개인적으로 가지고 있고 메모리 공간을 보호하기 때문이다. 근대의 모듈을 읽어오는 모놀리식 커널에서도 이런 것은 불가능하다.
Mach는 일반적인 용도의 마이크로커널로 알려졌지만 특별한 용도로 설계된 마이크로커널도 있다. L3는 마이크로커널이 느리지 않다는 것을 보여주기 위해 만들어졌다. L4는 L3의 후예로 Fiasco 구현으로 대중적인데 L4 프로세스들과 별도의 공간에서 리눅스 구동이 가능하다. 이런 특성의 스크린샷은 freshmeat.net에서 구할 수 있다. Pistachio라 불리는 새 버전도 역시 가능하다.
QNX는 1980년 초에 나타난 운영 체제로 극 최소주의 마이크로커널 설계로 이루어졌다. 이 시스템은 Mach가 목표로 했던 마이크로커널 이념을 더 성공적으로 이루었다. QNX는 우주 왕복선의 로봇 팔과 (작은 실수가 수십억의 손실을 입히는 허블 우주망원경의 거울 등의) 오차에 민감한 유리를 닦는 기계에도 적용되었다.
도스(, 디스크 오퍼레이팅 시스템, DOS)는 디스크 운영 체제의 일종으로서 디스크에 읽고 쓰기 등의 명령을 수행하는 프로그램이다. 명령어를 직접 입력하는 명령 줄 기반이다.
1981년부터 1995년까지, 또 부분적으로 MS-DOS 기반인 마이크로소프트 윈도우(95, 98, 미)를 포함한 2000년까지는 MS-DOS가 IBM PC 호환기종 시장을 장악하였다. 도스는 MS-DOS, PC DOS, DR-DOS, 프리도스, ROM-DOS, PTS-DOS를 포함한 비슷한 명령 줄 시스템의 계열이다.
초기의 도스.
디지털 리서치의 CP/M이 가장 대표적인 도스의 원형이다. 8비트 개인용 컴퓨터에는 CP/M이 널리 사용되었으나 애플 II는 독자적인 애플 도스(정식 명칭은 그냥 DOS)를, MSX는 MSX-DOS를 썼다. 이들 컴퓨터도 나중에 CP/M을 지원하지만 디스크의 포맷이 달라서 서로 바꾸어 쓸 수는 없었다. IBM-PC에서는 이를 모방한 QDOS로부터 PC-DOS와 MS-DOS가 나왔으며, 나중에 CP/M은 16비트 버전인 CP/M-86 바탕으로 DR-DOS로 나왔다.
현재는 DR-DOS의 후기작인 오픈도스와, NTFS 등을 지원하는 공개 도스 프로젝트인 프리도스가 있다. MS-DOS는 마이크로소프트가 만든 가장 보편적으로 쓰인 도스이다. PC-DOS는 IBM의 도스이다. 버전 5.0까지는 사실상 MS-DOS와 같은 제품이었으나 그 이후 추가된 내용이 달라졌다. DR-DOS는 디지털 리서치사에서 만든 도스이다. 이것은 나중에 노벨 도스(Novell DOS)로 바뀌었다가 다시 칼데라 오픈 도스(Caldera OpenDOS)로 바뀐다.
쇠퇴.
윈도우 3.1 이하의 버전과 같이 초기 버전의 마이크로소프트 윈도우는 별도 버전의 도스 위에서 실행되었다. 1990년대 초에 윈도우의 그래픽 셸은 도스 시스템에서 많이 이용되었다. 1995년에 윈도우 95가 별도의 도스 라이선스를 요구하지 않은 독립형 운영 체제로 번들되었다. 윈도우 95(및 이를 따랐던 윈도우 95과 ME)는 기본 OS 커널을 인계 받았지만 MS-DOS 구성 요소는 호환성을 위해 그대로 남겨두었다. 윈도우 미를 제외한 윈도우 95, 98과 더불어 MS-DOS 구성 요소는 윈도우를 시작하지 않고도 구동이 가능하였다. 윈도우 NT 계열 운영 체제가 널리 사용되면서, 윈도우 사용을 위해 더 이상 도스가 필요없게 되자 PC 사용자들 다수가 도스를 직접 사용하는 일은 중단되었다.
계속된 이용.
2012년 기준으로, 프리도스, DR-DOS, ROM-DOS, PTS-DOS, RxDOS, REAL/32와 같은 도스 운영 체제를 이용할 수 있다. 델, HP를 포함한 일부 컴퓨터 제조업체들은 FreeDOS를 OEM 운영 체제를 포함한 컴퓨터들을 판매한다.
임베디드 시스템.
하드웨어에 직접 접근하는 도스 구조는 임베디드 장치에서 이용할 때 매우 이상적이다. 최신 판의 DR-DOS가 현재에도 이 시장에 초점을 두고 있다. ROM-DOS가 캐논 파워샷 프로 70의 임베디드 시스템에 사용되었다.
에뮬레이션.
리눅스 하에서 도스 프로그램들을 거의 네이티브 속도로 구동할 수 있는 DOSEMU라는 리눅스 네이티브 가상 머신을 이용하여 여러 도스 사본들을 실행할 수 있다. 도스박스를 포함하여 여러 버전의 유닉스에서 도스를 구동하기 위한 다른 수많은 에뮬레이터들이 있다.
도스 에뮬레이터들은 마이크로소프트 윈도우 하에서 게임이나 다른 도스용 소프트웨어를 구동하기에 적절한 방법인데, 현대 버전은 도스와의 완전한 호환성이 결여되어 있기 때문이다. 현대의 운영 체제에서 오래된 게임을 즐기도록 고안된 도스박스가 대표적인 예이다. 다른 대안으로는 상에서 도스 운영 체제의 사본으로 도스 응용 프로그램들을 구동하는 것이다. 이러한 접근은 오버헤드는 증가되지만 더 나은 호환성을 제공한다.
설계.
모든 MS-DOS형 운영 체제들은 인텔 x86 호환 CPU를 갖춘 컴퓨터, 주로 IBM-PC 및 호환기종에서 동작한다. 특정 기계에 의존적인 MS-DOS 버전들은 수많은 비 IBM 호환 x86 기반 컴퓨터용으로 개발되었으며, 여기에는 제조업체 이름을 딴 마이크로소프트의 배포판에서부터 비 IBM-PC 호환 하드웨어와 동작하도록 설계된 버전에 이르기까지 다양하다. 응용 프로그램들이 직접 하드웨어 접근 대신 도스 API를 사용하는 한 IBM-PC 비호환 머신들에서도 실행이 가능하다. 1985년, 디지털 리서치는 또한 모토로라 68000 CPU용 컨커런트 도스 68K 버전 및 1990년대 초에 모토로라 CPU용 DOS/NT 파생 오리지널 프리도스 커널 DOS-C가 있었다. 이 시스템들이 도스 구조와 유사하긴 했지만, 응용 프로그램들은 이러한 x86이 아닌 CPU의 비호환 명령 집합으로 인해 이진 호환성이 없었다. 그러나 고급 언어로 작성된 응용 프로그램들은 쉽게 포팅이 가능했다.
도스는 재진입성이 없는 기본 커널 기능들을 갖춘 단일 사용자, 싱글태스킹 운영 체제이다. 즉, 한 번에 하나의 프로그램 해당 커널 기능들을 사용할 수 있으며 도스 스스로는 하나 이상의 프로그램을 한 번에 실행할 수 있게 하는 기능이 없다. 도스 커널은 문자 입출력, 파일 관리, 메모리 관리, 프로그램 적재 및 종료와 같이 프로그램을 위한 다양한 함수를 제공한다.
도스는 기본적으로 배치 파일(파일 확장자는 codice_1)을 통해 셸 스크립트를 위한 기능을 제공한다. 이것들은 텍스트 파일로서, 문서 편집기를 이용해서 작성이 가능하다. 컴파일된 프로그램과 동일한 방식으로 실행되며, 배치 파일의 각 줄을 명령 단위로 실행한다. 배치 파일은 또한 여러 내부 명령을 이용할 수 있는데, 이를테면 GOTO와 조건문을 들 수 있다. GOSUB 및 단순 산술은 DR-DOS COMMAND.COM 및 4DOS와 같은 일부 서드 파티 셸을 통해 지원되지만, 실질적인 형태의 프로그래밍이 지원되는 것은 아니다.
이 운영 체제는 문자 기반 응용 프로그램의 개발을 허용하는 API를 제공하지만 그래픽 카드, 프린터, 마우스와 같은 하드웨어 대부분의 접근을 위한 것은 아니다. 프로그래머들이 직접 하드웨어에 접근하게 하려면 각 프로그램이 개별 하드웨어 주변기기에 맞는 자체 장치 드라이버를 갖추어야 했다. 하드웨어 제조업체들은 사양을 공개하여 대중화된 응용 프로그램들을 위한 장치 드라이버들을 사용할 수 있도록 보증해야 했다.
파일 시스템.
도스는 8.3 파일 이름을 지원하는 파일 시스템을 사용하며, 여기에서 파일 이름이 8자, 확장자의 경우 3자를 사용한다는 뜻이다. 도스 2를 기점으로 계층적 디렉터리가 지원된다. 또, 각 디렉터리는 8.3 형식이지만 최대 디렉터리 경로 길이는 64자인데, 이는 도스가 관리하는 내부적인 현재 디렉터리 구조(CDs) 테이블 때문이다. 드라이브 이름을 포함하여, 도스가 온전히 지원하는 최대 길이는 마지막의 널 바이트를 포함, "드라이브:\경로\파일명.확장자"를 이용하여 80자이다.
도스는 파일 할당 테이블(FAT) 파일 시스템을 사용한다. 본래 드라이브 당 최대 4078개의 클러스터를 지원하는 FAT12였다. 도스 3.0에는 16비트 할당 엔트리를 사용하여 드라이브 당 최대 65517개의 클러스터를 지원하는 FAT16 지원을 추가하였다. 도스 3.31은 32 MB 드라이브 제한을 제거하고 최대 2 GB까지 지원하는 FAT16B의 지원을 추가하였다. 마지막으로 MS-DOS 7.1(윈도우 9x의 도스 구성 요소)은 32비트 할당 엔트리를 사용하는 FAT32의 지원을 추가함으로써 하드 드라이브를 최대 137 GB 이상 지원할 수 있게 되었다.
도스 3.1을 시작으로 파일 리다이렉터 지원이 도스에 추가되었다. 초기에 네트워킹 지원을 위해 사용되었으나 나중에는 MSCDEX를 이용한 CD-ROM 드라이브 지원에 사용되었다. IBM PC DOS 4.0 또한 IFS(installable file system)를 지원했으나 사용되지 않아 도스 5.0에서 제거되었다.
드라이브 명명 계획.
도스에서 드라이브들은 식별 가능한 문자들을 가리킨다. 표준화된 관습으로, "A'와 "B"는 플로피 드라이브를 위해 할당한다. 오직 하나의 플로피 드라이브를 가진 시스템에서 도스는 이 드라이브에 두 개의 문자를 할당하며, 프로그램들이 이들을 교체할 때 사용자에게 디스크를 스왑할 것인지 묻게 된다. 플로피에서 플로피로 복사하거나 다른 곳에서 데이터를 접근하는 동안 특정 플로피로부터 프로그램을 실행하고자 할 때 이용된다. 하드 드라이브들은 본래 문자 "C"와 "D'로 할당되었다. 도스는 드라이브 당 하나의 활성 파티션만 지원할 수 있었다.
예약된 장치 이름.
도스에는 내부 문자 장치로 점유하고 있는 까닭에 파일 이름을 사용할 수 없는 예약 장치명이 있다. 또, 이러한 제한은 여러 윈도우 버전에도 영향을 미치면서 어떠한 경우에는 충돌이나 보안 취약성을 야기하기도 한다.
예약어는 다음과 같다:
메모리 관리.
도스는 원래 인텔 8086/8088 프로세서용으로 설계되었으므로 최대 1 MB의 램에만 직접 접근할 수 있었다. PC 아키텍처로 인해 최대 640 KB만 사용 가능하며(기본 메모리) 그 중 상위 384KB가 예약된다.
사용자 인터페이스.
도스 시스템들은 명령 줄 인터페이스를 이용한다. 프로그램들은 명령 프롬프트에서 파일 이름을 입력하여 시작할 수 있다. 도스 운영 체제들은 시스템 유틸리티와 같은 몇 가지 프로그램들을 포함하고 있으며, 이러한 프로그램들과 관련되지 않는 내부 명령어라 불리는 추가 프로그램들도 제공한다.
사용자에 더욱 친숙한 환경을 제공하려는 시도 속에, 수많은 소프트웨어 제조업체들은 메뉴나 아이콘 기반 인터페이스를 제공하는 파일 관리 프로그램들을 작성하였다. 마이크로소프트 윈도우가 잘 알려진 예인데, 마이크로소프트 윈도우 9x가 프로그램 로더를 기본 내장하면서 가장 흔히 쓰이는 PC 호환 프로그램 로더로서 도스를 대체하였다. 텍스트 사용자 인터페이스 프로그램들에는 Mdir, 노턴 커맨더, 도스 내비게이터, 볼코프 커맨더, 쿼터데스크 DESQview, 사이드킥이 있다. 그래픽 사용자 인터페이스 프로그램에는 디지털 리서치의 그래픽 인바이런먼트 매니저(본래 CP/M용으로 작성됨)와 GEOS가 있다.
마침내, 주요 도스 시스템 제조업체들이 자신들만의 환경 관리자를 포함하기 시작하였다. MS-DOS/IBM DOS 4는 도스 셸을 포함하였다. 이듬해에 출시된 DR DOS 5.0은 GEM 기반의 뷰맥스를 포함하였다.
종료 후 상주 프로그램.
도스는 멀티태스킹 운영 체제가 아니다. 그러나 도스는 종료 후 상주 프로그램(Terminate and Stay Resident, TSR)을 제공하여 여러 프로그램들이 메모리에 상주할 수 있게 도와준다.
이러한 프로그램들은 시스템 타이머나 키보드 인터럽트를 후킹하여 이들이 백그라운드에서 작업을 수행하게끔 하거나 현재 실행 중인 프로그램을 적시에 호출할 수 있게 한다. codice_24 명령어는 이를 수행하여 백그라운드 인쇄 스풀링을 구현하였다. 볼랜드 사이드킥도 이 기법을 사용한다.
종료 후 상주 프로그램들은 기본적으로 이용할 수 없는 기능을 제공하는 데에도 사용되었다. CED와 도스키와 같은 프로그램들은 COMMAND.COM에서 사용할 수 있는 기능 이상으로 명령 줄 편집 기능을 제공하였다. 마이크로소프트 CD-ROM 확장 (MSCDEX)과 같은 프로그램들은 CD-ROM 디스크의 파일을 접근할 수 있게 하였다.
일부 TSR들은 초기 수준의 태스크 전환을 수행할 수 있었다. 이를테면, 셰어웨어 프로그램 백 앤드 포스 (1990년)은 단축키를 이용하여 현재 실행 중인 프로그램의 상태를 디스크로 저장하고, 다른 프로그램을 불러와 전환할 수 있었다.
도스는 지배적인 PC 호환 플랫폼이었으며 수많은 유명한 프로그램들이 도스를 위해 작성되었다. 여기에는 다음을 포함한다:
라플라스 변환()은 어떠한 함수 formula_1에서 다른 함수로의 변환으로, 선형 동역학계와 같은 미분 방정식을 풀 때 유용하게 사용된다. 피에르시몽 라플라스의 이름을 따 붙여졌다.
라플라스 변환을 이용하면, 미분 방정식을 계수방정식으로 변환하여, 문제들을 쉽게 해결할 수 있는 장점이 있다. 초기값 문제의 경우 일차적으로 일반해를 구하는 단계가 필요없게 되고, 비제차 미분방정식의 경우에는 대응하는 제차미분방정식을 먼저 풀 필요가 없다. 라플라스 변환은 주어진 식을 간단한 식으로 변환한 뒤, 변형된 식을 푼다. 그리고 그렇게 풀어진 해를 다시 원식으로 변환한다.
함수 formula_1의 라플라스 변환은 모든 실수 t ≥ 0 에 대해, 다음과 같은 함수 formula_3로 정의된다.
여기서 formula_5는 formula_6를 간단히 나타낸 것이고 복소수 formula_7, σ와 ω는 실수이다.
"t" shifting.
참고: formula_19는 층계 함수이다.
역변환.
함수 formula_1의 라플라스 변환을 formula_3라 하면 다음 식을 통해 formula_3로부터 formula_1를 구할 수 있다.
하지만 보통 위의 계산을 직접 하기 보다는 이미 알려져 있는 라플라스 변환들을 이용해 역변환을 구하는 것이 쉽다. 예를 들어
미분방정식의 풀이.
이고 이를 formula_35에 관해 정리하면
이다. 따라서, formula_37는 다음과 같다.
국제 사무기기 회사(國際事務機器會社, )는 뉴욕 아몽크에 본사를 두고 있으며 175개국 이상에 진출해 있는 미국의 다국적 기술 회사이다. 별칭은 빅 블루(Big Blue)이다. IBM은 12개국에 19개 연구 시설을 보유한 세계 최대의 산업 연구 기관으로, 1993년부터 2021년까지 29년 연속 기업이 창출한 연간 미국 특허 최다 기록을 보유하고 있다.
IBM은 1911년 기록 관리 및 측정 시스템 제조업체의 지주 회사인 전산제표기록회사(CTR, Computing-Tablating-Recording Company)로 설립되었다. 1924년에 "International Business Machines"로 이름이 바뀌었고 곧 펀치 카드 도표 작성 시스템의 선두 제조업체가 되었다. 1960년대와 1970년대에 시스템/360으로 대표되는 IBM 메인프레임은 미국 내 컴퓨터의 80%, 전 세계 컴퓨터의 70%를 생산하는 세계 최고의 컴퓨팅 플랫폼이었다.
IBM은 1980년대에 IBM PC를 통해 마이크로컴퓨터 시장에 진출했다. IBM PC는 곧 IBM의 베스트셀러 제품 중 하나인 PC로 알려지게 되었다. IBM의 통찰력 부족으로 인해 PC는 지식 재산권법에 의해 제대로 보호되지 않았다. 결과적으로 IBM은 PC 시장에서 신흥 경쟁자에게 시장 지배력을 빠르게 잃기 시작했으며 동시에 PC 플랫폼의 개방성은 가장 인기 있는 마이크로컴퓨터 표준으로서 PC의 수명을 보장했다.
1990년대부터 회사는 운영을 축소하고 상품 생산을 중단하기 시작했으며, 특히 2005년에 개인용 컴퓨터 부문을 레노버 그룹에 매각했다. 이후 IBM은 컴퓨터 서비스, 소프트웨어, 슈퍼컴퓨터 및 과학 연구에 집중해 왔다. 2000년부터 당사의 슈퍼컴퓨터는 지속적으로 세계 최고 수준으로 평가되어 왔으며, 2001년에는 1년에 3,000개 이상의 특허를 생성한 최초의 회사가 되었다. 이는 2008년 4,000개 이상의 특허로 이 기록을 깨뜨린 것이다. 2022년 기준으로 회사는 150,000개의 특허를 보유하고 있다.
세계에서 가장 오래되고 규모가 큰 기술 기업 중 하나인 IBM은 ATM(현금 자동 입출금기), DRAM(동적 랜덤 액세스 메모리), 플로피 디스크, 하드 디스크 드라이브, 자기 스트라이프 카드, 관계형 데이터베이스, SQL 프로그래밍 언어 및 UPC 바코드 등 여러 기술 혁신을 담당해 왔다. 이 회사는 고급 컴퓨터 칩, 양자 컴퓨팅, 인공 지능 및 데이터 인프라 분야에 진출했다. IBM 직원과 졸업생은 6개의 노벨상과 6개의 튜링상을 포함하여 과학 연구 및 발명에 대한 다양한 표창을 받았다.
IBM은 상장 회사이며 다우 존스 산업평균지수의 30개 회사 중 하나이다. IBM은 2022년 전 세계적으로 297,900명 이상의 직원을 고용하는 세계 최대 고용주 중 하나이다. 기술 부문 내에서의 상대적인 감소에도 불구하고 IBM은 매출 기준으로 7번째로 큰 기술 회사로 남아 있으며, 미국에서 전체 매출 기준으로 67번째로 큰 회사이다. 또한 세계에서 가장 인지도 있고 가치 있는 브랜드 중 지속적으로 순위를 차지하고 있다.
IBM은 19세기 후반에 개발되고 상용화된 여러 기술 혁신에서 시작되었다. 줄리어스 E. 피트랩은 1885년에 컴퓨팅 규모에 대한 특허를 받았다. 알렉산더 데이(Alexander Dey)가 다이얼 레코더(1888)를 발명했다. 허먼 홀러리스는 전기표 작성기(1889년)에 대한 특허를 받았다. 윌러드 번디는 근로자의 도착 및 출발 시간을 종이 테이프에 기록하는 타임 클럭(1889년)을 발명했다. 1911년 6월 16일, 4개 회사가 찰스 랜렛 플린트에 의해 뉴욕주에서 합병되어 뉴욕 엔디콧에 본사를 둔 다섯 번째 회사인 전산제표기록회사(CTR, Computing-Tablating-Recording Company)가 탄생했다. 5개 회사는 뉴욕주 엔디콧(Endicott)과 빙엄턴(Binghamton)에 1,300명의 직원과 사무실, 공장을 두고 있었다. (오하이오주 데이턴, 미시간주 디트로이트, 워싱턴 D.C., 캐나다 토론토)
전체적으로 두 회사는 상업용 저울과 산업용 시간 기록기, 고기 및 치즈 슬라이서부터 도표 작성기 및 천공 카드에 이르기까지 다양한 판매 및 임대용 기계를 제조했다. 토머스 J. 왓슨 시니어는 존 헨리 패터슨에 의해 내셔널 캐시 레지스터 컴퍼니에서 해고되었고 플린트를 불러 1914년 CTR에 자리를 제안했다. 왓슨은 총괄 관리자로 CTR에 합류했으며, 11개월 후 NCR 재직 기간과 관련된 독점금지 사건이 해결되면서 사장이 되었다. 패터슨의 선구적인 비즈니스 관행을 배운 왓슨은 계속해서 CTR 회사에 NCR의 도장을 찍었다. 그는 "관대 한 판매 인센티브, 고객 서비스에 중점, 단정하고 검은 옷을 입은 판매원에 대한 고집, 모든 직원에게 회사 자부심과 충성심을 심어주기위한 복음주의적인 열정"이라는 판매 관례를 구현했다. 그가 가장 좋아하는 슬로건인 "THINK"는 각 회사 직원들의 만트라가 되었다. 왓슨의 첫 4년 동안 수익은 900만 달러(현재 1억 5,800만 달러)에 이르렀고 회사 운영은 유럽, 남미, 아시아 및 호주로 확장되었다. 왓슨은 서투른 하이픈으로 연결된 이름인 "Computing-Tablating-Recording Company"를 결코 좋아하지 않았으며 이전에 CTR의 캐나다 부서 이름으로 사용되었던 보다 광범위한 제목인 "International Business Machines"로 대체하기로 결정했다. 이름은 1924년 2월 14일에 변경되었다. 1933년까지 대부분의 자회사는 IBM이라는 하나의 회사로 합병되었다.
나치는 홀러리스 펀치 카드와 알파벳순 회계 장비를 광범위하게 사용했으며 IBM이 최대 지분을 소유한 독일 자회사인 도이치 홀레리스 마쉬넨(Deutsche Hollerith Maschinen GmbH, Dehomag)은 1930년대 초부터 이 장비를 공급했다. 이 장비는 진행 중인 인구 조사를 통해 독일과 나치 통제 하에 있는 다른 국가의 시민을 분류하려는 나치의 노력에 매우 중요했다. 이러한 인구 조사 데이터는 유태인 및 기타 표적 집단의 검거를 촉진하고 강제 수용소 수용을 포함하여 홀로코스트 기계를 통한 이들의 이동을 목록화하는 데 사용되었다. 나치 강제 수용소는 계산 및 분류 기계를 포함한 IBM 기계를 갖춘 홀러리스 부서를 운영했다.
IBM은 1943년 8월부터 5월 사이에 제2차 세계대전에 사용된 M1 카빈총의 6%(약 346,500정)를 생산했다. IBM은 민간 판매용으로 총을 생산한 적이 없으며 군용으로만 총을 생산했다.
IBM은 제2차 세계 대전 중에 전자 기계 컴퓨터인 자동 시퀀스 제어 계산기를 제작했다. IBM은 1952년에 최초의 상용 프로그램 저장 컴퓨터인 진공관 기반 IBM 701을 출시했다. IBM 305 RAMAC는 1956년에 하드 디스크 드라이브를 출시했다. 회사는 1958년부터 7000 및 1400 시리즈를 통해 트랜지스터형 설계로 전환했다.
1956년 뉴욕에 있는 IBM 포킵시 연구실의 아서 L. 새뮤얼이 IBM 704를 프로그래밍하여 체커 게임뿐만 아니라 자체 경험을 통해 "학습"함으로써 인공 지능의 첫 번째 실제 사례를 시연했다. 1957년에는 포트란 과학 프로그래밍 언어가 개발되었다. 1961년 IBM은 아메리칸 항공을 위한 SABRE 예약 시스템을 개발하고 큰 성공을 거둔 셀렉트릭 타자기를 출시했다.
1963년에 IBM 직원과 컴퓨터는 NASA가 수성 우주비행사의 궤도 비행을 추적하는 데 도움을 주었다. 1년 후, 본사를 뉴욕에서 뉴욕 아몽크로 이전했다. 1960년대 후반에도 IBM은 1965년 제미니 비행, 1966년 토성 비행, 1969년 달 탐사에 참여하면서 우주 탐사 지원을 계속했다. IBM은 또한 새턴 V의 계기 장치와 아폴로 우주선 유도 컴퓨터를 개발 및 제조했다.
1964년 4월 7일, IBM은 최초의 컴퓨터 시스템 제품군인 IBM 시스템/360을 출시했다. 이는 대규모에서 소규모까지 전체 범위의 상업 및 과학 응용 프로그램을 포괄하므로 기업은 응용 프로그램을 다시 작성하지 않고도 처음으로 더 뛰어난 컴퓨팅 기능을 갖춘 모델로 업그레이드할 수 있다. 그 뒤를 이어 1970년에 IBM 시스템/370이 출시되었다. 360과 370을 함께 사용하면 IBM 메인프레임이 이 기간과 1980년대 초반까지 업계에서 지배적인 메인프레임 컴퓨터이자 지배적인 컴퓨팅 플랫폼이 되었다. 이들과 이를 실행하는 OS/VS1, MVS 등의 운영 체제와 그 위에 구축된 CICS 트랜잭션 처리 모니터 등의 미들웨어는 이 기간 동안 거의 독점 수준의 시장 점유율을 차지했으며 IBM이 가장 잘 알려진 브랜드가 되었다.
1969년 미국은 IBM이 범용 전자 디지털 컴퓨터 시스템 시장, 특히 업무용으로 설계된 컴퓨터를 독점하거나 독점하려 하여 셔먼 반독점법을 위반했다고 주장했으며, 이후 IBM이 IBM의 독점금지법을 위반했다고 주장했다. 임대 회사 및 플러그 호환 주변 장치 제조업체를 대상으로 한 조치. 얼마 지나지 않아 IBM은 많은 관찰자들이 소송의 직접적인 결과라고 믿었던 소프트웨어와 서비스를 분리하여 소프트웨어에 대한 경쟁적인 시장을 창출했다. 1982년에 법무부는 이 사건을 "가치 없음"으로 기각했다.
또한 1969년에 IBM 엔지니어인 포리스트 패리는 신용/직불/ATM 카드, 운전 면허증, 고속 교통 카드 및 기타 다양한 ID 및 액세스 제어 애플리케이션에 널리 사용되는 자기 스트라이프 카드를 발명했다. IBM은 이러한 카드 제조를 개척했으며 1970년대 대부분의 경우 이러한 애플리케이션을 위한 데이터 처리 시스템과 소프트웨어는 IBM 컴퓨터에서만 실행되었다. 1974년 IBM 엔지니어 조지 J. 로러는 범용 상품 부호(Universal Product Code)를 개발했다. IBM과 세계은행은 1981년 스왑 계약을 체결하면서 대중에게 처음으로 금융 스왑을 도입했다. 원래 IBM 5150으로 명명된 IBM PC는 1981년에 출시되었으며 곧 업계 표준이 되었다.