第 3 集 · B1 · 7 分钟
程序员 · 第3集 · Linux 命令行
开发者自己讲 Gentoo、浏览器扩展和 Linux 命令行,口语比课本松。 开头:多用户、多任务操作系统。

中俄字幕
многопользовательская и многозадачная операционная система.
多用户、多任务操作系统。
Смотрите, вычислительный процесс запускается от имени конкретного пользователя.
请看,计算进程以特定用户的身份运行。
То есть существует такое вот понятие как юзер, который имеет
也就是说,存在一个称为‘用户’的概念,该用户具有
некоторый юзер ID, соответственно UID.
某个用户ID,即UID。
Для того чтобы пользователей классифицировать и администрировать их полномочия, их
为了对用户进行分类并管理其权限,需要将用户
разделяют на группы.
划分为若干组。
Соответственно, существует у каждой группы групп идентификатор.
因此,每个组都有一个组标识符。
Естественно, что операционной системе и как программному обеспечению удобнее
显然,操作系统及软件更便于使用标识符而非名称进行操作。
работать не с именами, а с идентификаторами.
因此,在文件系统和进程空间中,我们
Поэтому в рамках файловой системы, в рамках пространства процессов у нас
……
идентификаторы используются, а если необходимо сопоставить, что ж это за
使用标识符,如果需要匹配,那么这是谁的
пользователь, то операционная система топает в специальный файл и там она смотрит,
用户,操作系统会访问一个特殊文件,并在其中查找
кто ты на самом деле есть.
你究竟是谁。
Понятно? Соответственно, вычислительный процесс, вычислительный процесс, который
明白了吗?因此,计算进程,即在操作系统中运行的计算进程,
запускается в операционной системе, да, он имеет, он от имени, соответственно,
是的,它以某个用户的名义运行,即以用户身份运行。
какого- то пользователя, от имени юзера.
是的,它以某个用户的名义运行,即以用户身份运行。
да и соответственно у него есть некоторые полномочия которые доступны данному
是的,它拥有该用户所具备的一些权限,
пользователю да и получается с его полномочиями
因此它以其权限运行。
что значит по сути полномочия то есть у нас вычислительные процессы оторваны от
所谓权限,本质上意味着我们的计算进程通过操作系统与真实硬件相隔离,
реального железа при помощи операционной системы они абстрагированы
它们被抽象化了。
Вот тут много различных вычислительных процессов.
这里有许多不同的计算过程。
Процесс один, вычислительный процесс.
只有一个进程,即计算进程。
Слушайте, ну я их сейчас два нарисую, потому что у меня им места мало, и нам
听好了,我现在画两个,因为我的空间不够,而且我们……
достаточно для объяснения того, что их как бы два.
两个就足以说明它们确实是两个。
да так вот вычислительные процессы живут и во первых изолированно друг от друга
是的,这些计算进程彼此独立运行,首先彼此隔离。
они не могут залезть в чужую память, а память, она вообще- то общая, то есть
它们无法访问彼此的内存;而内存本身其实是共享的,也就是说……
оперативная память, вот эти планки памяти, да, они вообще- то на физическом уровне,
内存条所代表的运行内存,在物理层面上确实是共用的。
оно и пространство единое.
整个内存空间是统一的。
Но при помощи аппаратной
但通过硬件……
поддержки, при помощи там контроллера памяти, разделения собственно полномочий и при
支持,例如内存控制器、权限划分等机制……
помощи того, что вся низкоуровневая деятельность, связанная с прерываниями, она в
帮助实现所有与中断相关的底层活动,
полных полномочиях ядра операционной системы и больше никого, скажем так,
完全由操作系统内核掌控,再无其他主体——可以说,
операционная система, она в принципе выполняется в привилегированном режиме, ну
操作系统本身原则上运行在特权模式下,嗯,
почти вся на самом деле, есть привилегированные и непривилегированные, то есть там
实际上几乎全部如此:存在特权与非特权之分,即
есть некий слой, который относится к ядру и ядерным вещам.
存在一个属于内核及内核相关事务的层级。
Ядро операционной системы, оно может все, то есть оно может, как это, условно, как
操作系统内核拥有全部权限,也就是说,它能做任何事情,比如,打个比方,
служба ФСБ, да, она может что угодно сделать абсолютно.
就像俄罗斯联邦安全局(FSB)一样,它能绝对地做任何事。
Но только она не имеет никаких собственных интересов.
但它自身没有任何私利。
операционная система она служебные роли выполняет вот а верхняя часть операционной
操作系统承担的是服务性职能;而操作系统的上层,
системы ну это некие API
嗯,就是一些应用程序接口(API)。
скажем так да то есть некоторая application programming interface
这么说吧,是的,也就是某种应用程序编程接口
там какие нибудь условные там под виндой там какой нибудь.
比如在 Windows 系统下,会有一些约定俗成的东西。
net mfc и всякие и утилиты утилиты
.NET、MFC 以及各种工具和实用程序
на самом деле это вообще по сути отдельные процессы да которые запускаются и живут
实际上,它们本质上是独立的进程,启动后独立运行。
рядом с вашими вычислительными процессами ну только у них будут какие то отдельные
与您的计算进程并行运行;只不过它们拥有各自独立的……
там полномочия операционная система кстати ради своих собственных нужд
权限。顺便说一句,操作系统出于自身需要,
создает отдельных пользователей которые
会创建一些独立的用户,这些用户
не являются людьми то есть она создает таких псевдо как бы ну они с точки зрения
并非真实的人——也就是说,它创建的是某种伪用户;但从操作系统的角度看,
операционной системы вполне себе пользователи некие сущности у которых есть
它们确实是真正的用户,即具有特定身份的实体,拥有
собственный идентификатор некая собственная группа а самое главное некие
独立的标识符、专属的用户组,而最重要的是拥有特定的……
ограниченные полномочия за счет этого какие то вычислительные процессы собственно
因权限受限,某些计算进程实际上
самой операционной системы утилитки какие то они запускаются но не имеют полномочий
操作系统自带的工具程序虽能运行,但缺乏相应权限
условного ФСБ.
比如俄罗斯联邦安全局(FSB)
Понятно, вот как государство разделяет полномочия, такой институт имеет такие
明白了吧?就像国家划分职权一样,某一机构拥有特定职权,另一机构则拥有其他职权
полномочия, такой имеет вот такие полномочия.
该机构拥有这些职权,该机构拥有那些职权
Ну и соответственно они бегают через какой- то там API, и операционная система для
因此,它们均需通过某种API运行,操作系统为每个计算进程
каждого вычислительного процесса
为每个计算进程
при любом действии, любое действие, связанное с аппаратурой, оно проходит через
任何操作——只要涉及硬件——都必须经由
application program interface,
应用程序编程接口(API)
через какой- то из интерфейсов взаимодействия с операционной системой.
经由某种与操作系统交互的接口
ну это может быть если это на чистом c условно на или на ассембли бинарный
嗯,这可能是纯C语言(比如)或汇编语言的二进制程序。
программный код но в конечном счете оно вот через это дело проходит так называемый
是软件代码,但最终都要经过所谓的……
системный вызов то есть само вот это вот обращение да как это как заявление через
系统调用,也就是这种访问行为——对,就像通过……提交申请一样。
госуслуги да так называемый системный вызов
政务服务平台,即所谓的系统调用。
на так вот системный вызов это всегда долгая операция потому что это не то что
这样的系统调用总是一项耗时的操作,因为它不是……
вычислительный процесс может сделать сам
计算过程自身能完成的。
И вот представьте себе, если вы делали хоть что- нибудь через госуслуги, то вы
试想一下,如果你曾通过政务服务平台办过任何事,那么你……
понимаете, что это, конечно, намного быстрее, чем бегать, если вы
就会明白,这当然比亲自跑腿快得多;如果你……
успели повзаимодействовать с государством без госуслуг, то вы знаете, что это еще
曾不通过政务服务平台与政府打交道,那你就会知道,那还要更慢。
дольше. А если вы можете совершить, вот что называется, системный вызов, но тем не
少你能执行所谓的系统调用,但即便如此……
менее оно должно там перевариться, потому что чаще всего предполагается, что по
它在那里需要更少的处理时间,因为通常假设
итогам системного вызова операционная система пойдет к реальному оборудованию,
系统调用结束后,操作系统会访问实际硬件,
достанет из него информацию, да, и ее вернет вам
从中获取信息并返回给您。
обратно как колбэк, ну не колбэк на самом деле, просто как возврат из системного
作为回调返回——其实并非严格意义上的回调,而只是系统调用的返回值。
вызова. Хотя на самом деле может быть она вернет вам, вот я начала это делать, и вот
但实际上,它可能先返回给您一个标识符,比如您的申请编号。
тебе, ну какой нибудь идентификатор, как номер вашего заявления вот такой то.
请您一周后再来。
Приходите через неделю.
请您一周后再来。
Да, вы через неделю сделаете, через сколько там, микросекунд вы сделали или
是的,您过了一段时间(比如几微秒或几毫秒)后,再次向操作系统发起查询。
миллисекунд, запросите операционная система, как там не готова случай.
询问任务是否已完成。
моя задача она говорит нет не готова еще не готова и вы можете с ней то есть это
我的任务会回复:‘还没好,还没准备好’,此时您可以……
взаимодействие на самом деле может быть и более длительным ну условно когда вы
交互实际上可能持续更长时间,例如当您
делаете операцию ввода вывода например операционная система я хочу достать
执行输入/输出操作时,比如操作系统说:‘我想从硬盘中读取某个文件’,但真实硬盘上根本不存在
информацию жесткого диска файл такой то у реального жесткого диска вообще нет
‘文件’这个概念。对,硬件本身根本没有‘文件’的概念。
понятия файл вот у вот у железяки да вот
没错,就是硬件设备本身。
собственно хард привода неважно ssd привода у него есть
无论是机械硬盘还是固态硬盘(SSD),其内部结构都无关紧要;它们都只有
даже кластеры это уже не
甚至‘簇’这个概念也已不属于底层硬件。
来源:Тимофей Хирьянов · CC BY 3.0