V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Nitroethane  ›  全部回复第 18 页 / 共 56 页
回复总数  1114
1 ... 14  15  16  17  18  19  20  21  22  23 ... 56  
2021-05-29 02:16:37 +08:00
回复了 pocarisweat 创建的主题 WWDC 自 2010 年起,苹果在 WWDC 上发布或更新的硬件产品列表
@fredli intel 受害者表示今年只关心 16 寸 mbp,只要上 m 系列芯片,内存可以选 32g,我立马下单
2021-05-24 19:34:57 +08:00
回复了 qqqtz 创建的主题 问与答 你们都把 capslock 跟 ctrl 对调吗
Mac,把 capslock 改成 control,control 改成 escape,escape 还是 escape
我买的巴林涂装,挺好看的
2021-05-19 23:20:32 +08:00
回复了 Themyth 创建的主题 iPad 有人收到 12.9 的 iPad 了么 能和上一代的妙控键盘完美使用吗?
@zjuster #5 哪是 Macbook 的通病,就是普通的笔记本也有一样的问题
2021-05-12 17:07:03 +08:00
回复了 chengkai 创建的主题 程序员 我又被爱奇艺索赔了 100 万
@en20 #68
@shyling #72
@TMily #74

google cached snapshot
2021-05-10 23:01:03 +08:00
回复了 b0644170fc 创建的主题 DevOps 后端开发转运维,大家伙帮忙分析分析
我觉着转架构更靠谱
2021-05-07 22:04:06 +08:00
回复了 wxlg1117 创建的主题 Linux 7zip 官方 7-Zip 21.02 alpha (2021-05-06)源代码编译...
我记得 centos 有个官方仓库源,名字以 rh 开头的,里面有最新的 gcc 套件,而且不会污染当前系统
2021-05-05 22:14:38 +08:00
回复了 zero3412 创建的主题 JavaScript 神奇的 Javascript,谁能告诉我为什么
@JerryCha data[0] 不一定传引用啊,得看 data 的数据类型,如果是 char* data[],那 data[0] 就传的是指针,如果是 char data[],data[0] 照样传值
2021-04-28 16:25:56 +08:00
回复了 MieuxxPro 创建的主题 iPhone 求助 iPhone11 进水 望 V 友解答
你这 iPhone11 不给力啊,我的 11 去年直接掉到水里全身水洗一秒钟,捞出来啥事没有,除了扬声器,干了之后扬声器也没问题了
2021-04-27 12:37:25 +08:00
回复了 xtx 创建的主题 iOS ios14.5 现已支持下载。
早上走的时候忘拿手表的充电器了,只能等晚上才能体验到了,血亏 😭
2021-04-19 12:18:13 +08:00
回复了 keithszc 创建的主题 Docker docker 内进程如何检测自身是否在容器内运行?
对于没有在 docker 中的 PID 为 1 的进程来说,它的 cgroup 目录都是 /。而对于 docker 中的进程来说,它的 cgroup 目录会包含 /docker 子字符串。下面是我的 Linux 上的结果。
docker 中 PID 为 1 的进程:
$ cat /proc/1/cgroup
12:hugetlb:/system.slice/docker-e0539beecb2db33df4af004f03877dda0ae7b880775bf1d7cf36e62013c468bf.scope
11:cpuset:/system.slice/docker-e0539beecb2db33df4af004f03877dda0ae7b880775bf1d7cf36e62013c468bf.scope
10:perf_event:/system.slice/docker-e0539beecb2db33df4af004f03877dda0ae7b880775bf1d7cf36e62013c468bf.scope
9:freezer:/system.slice/docker-e0539beecb2db33df4af004f03877dda0ae7b880775bf1d7cf36e62013c468bf.scope
8:memory:/system.slice/docker-e0539beecb2db33df4af004f03877dda0ae7b880775bf1d7cf36e62013c468bf.scope
7:rdma:/
6:blkio:/system.slice/docker-e0539beecb2db33df4af004f03877dda0ae7b880775bf1d7cf36e62013c468bf.scope
5:pids:/system.slice/docker-e0539beecb2db33df4af004f03877dda0ae7b880775bf1d7cf36e62013c468bf.scope
4:net_cls,net_prio:/system.slice/docker-e0539beecb2db33df4af004f03877dda0ae7b880775bf1d7cf36e62013c468bf.scope
3:cpu,cpuacct:/system.slice/docker-e0539beecb2db33df4af004f03877dda0ae7b880775bf1d7cf36e62013c468bf.scope
2:devices:/system.slice/docker-e0539beecb2db33df4af004f03877dda0ae7b880775bf1d7cf36e62013c468bf.scope
1:name=systemd:/system.slice/docker-e0539beecb2db33df4af004f03877dda0ae7b880775bf1d7cf36e62013c468bf.scope
0::/system.slice/docker-e0539beecb2db33df4af004f03877dda0ae7b880775bf1d7cf36e62013c468bf.scope


宿主机中 PID 为 1 的进程:
$ cat /proc/1/cgroup
12:hugetlb:/
11:cpuset:/
10:perf_event:/
9:freezer:/
8:memory:/init.scope
7:rdma:/
6:blkio:/init.scope
5:pids:/init.scope
4:net_cls,net_prio:/
3:cpu,cpuacct:/init.scope
2:devices:/init.scope
1:name=systemd:/init.scope
0::/init.scope



还可通过检测是否存在 /.dockerenv 文件来判断。
docker 在 Linux 下的实现只是利用了内核的命名空间技术,将 pid 、network 、user 、uts 、mount 资源隔离了,所以没有什么额外开销。
你所说的“隔离出单独的虚拟存储空间”的说法很模糊而且有歧义。这里我将你所谓“虚拟存储空间”理解为虚拟地址空间来说,默认情况下,所有进程的虚拟地址空间都是相互独立的,一个进程不可能访问到其他进程的虚拟地址空间,因此才有了进程间通信机制。
“虚拟的系统进程树”,其实就是 pid namespace 。举例来说,新建一个 pid namespace,然后在其中创建一个进程,其 pid 为 1,而在其 parent namespace 中的 pid 是其他数值,但肯定不是 1 。总之,进程的 pid 在不同的 namespace 中的值是不一样的。
vmware 这种是硬件虚拟化,和 Linux 上的原生 docker 是两回事。
macOS 和 Windows 上的 docker,其实是先起一个 Linux 虚拟机,然后在其中跑 docker 。
2021-04-16 09:09:32 +08:00
回复了 LeeReamond 创建的主题 问与答 都是切换,为什么系统调用比进程切换的速度快?
就拿 int 0x80 中断实现系统调用来说吧,Linux 内核版本 2.6.32 。中断门在 trap_init() 函数中初始化,set_system_trap_gate(SYSCALL_VECTOR, &system_call) ( https://elixir.bootlin.com/linux/v2.6.32/source/arch/x86/kernel/traps.c#L963 )。从这里可以看出,触发 0x80 号中断时会执行 system_call 函数。而 system_call 函数时定义在 /arch/x86/kernel/entry_64.S 中的汇编代码( https://elixir.bootlin.com/linux/v2.6.32/source/arch/x86/kernel/entry_64.S#L455 )。看看这个函数就知道为了进入系统调用做了哪些操作。
再看看进程切换。进程切换发生在进程被调度的时候,由 context_switch() 函数实现。其中最关键的 switch_mm() 和 switch_to() 函数完成了主要的工作。
通过比较内核代码,你看看哪个简单,哪个麻烦。


不要觉得没人回答你的问题就是他们不懂。我开始看到你这个问题的时候就觉得你对一些基本的操作系统概念不熟悉,表述问题太多。如果不是为了复习一下以前的知识,我是不会回答你的问题的。其实请教问题的时候可以稍微虚心一点。

至于怎样学习操作系统,首先你对一些基本的概念了解的怎样?例如操作系统的目的、出现的原因,以及操作系统的基本组成部分,如进程管理和调度、内存管理、文件系统、进程间通信等等。然后每个组成部分的基本概念是否熟悉,例如对于进程管理来说,操作系统通过 PCB 来描述每个进程,等等。
基本概念了解之后,带着这些具体的疑问结合相关的书和文章去看内核源码。就拿这个问题来说,首先要了解系统调用的具体实现,先去 Google 一些文章,了解大致的实现。然后边读书边看源码去深入研究。同时用一些内核调试技术去亲手实践一下。
2021-04-16 07:43:28 +08:00
回复了 LeeReamond 创建的主题 问与答 都是切换,为什么系统调用比进程切换的速度快?
“理论上来说系统调用也经历了进程切换的过程”,先问是不是,再问为什么。Linux 下系统调用的实现,从最早的使用 int 指令触发中断执行系统调用,还是后来的使用专有的系统调用指令如 sysenter,只是从用户态切换到内核态而已,进入系统调用并不需要很多操作。
对于进程切换来说,所有和进程上下文有关的东西都要修改,例如修改大多数寄存器的值等等。
Linux 内核中没有线程的概念。内核代码注释里,thread 、task 、process 三个词经常混用,都指的是 process 。线程是通过标准库在用户态通过 clone 系统调用实现的。也就是说,Linux 下线程是共享某些系统资源的轻量级进程。线程切换的代价比进程切换的代价要小得多。
至于你看的这个实验,建议发出来让大家看看。
最后,从你对问题的描述来看,建议恶补一下操作系统的知识。
上面描述可能有一些不准确的地方,如果错误请指出
客户端不好用。我现在用 Web 端的 outlook,感觉比原生客户端好用
2021-04-09 14:48:41 +08:00
回复了 sytnishizuiai 创建的主题 MacBook Pro mbp M2 今年会出吗?我要撑不住了
我也再焦急地等待新款 MBP 。目前在用 17 款 13 寸无 bar 16G,CPU 太垃圾了,受不了了
2021-04-09 14:40:45 +08:00
回复了 tg11 创建的主题 macOS 你们的 mac 端网易云卡吗?
卡,17 款 13 寸无 bar i5 两核 16G 内存。网易云运行时间一长,什么操作都卡,受不了了
2021-04-09 09:26:49 +08:00
回复了 AManOnShelf 创建的主题 职场话题 这个月公司给大家普调了薪水,但是。。。
@AManOnShelf #8 每年 3 月份开始统计,4 月份生效吧,5 月份发 4 月份工资的时候才能知道。我是新人,第一次调,所以不太清楚涨幅。等 5 月份知道了再回你
2021-04-09 09:20:13 +08:00
回复了 AManOnShelf 创建的主题 职场话题 这个月公司给大家普调了薪水,但是。。。
我司这俩月才开始调,要等下月发工资才能知道涨幅🌚
1 ... 14  15  16  17  18  19  20  21  22  23 ... 56  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3734 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 50ms · UTC 04:20 · PVG 12:20 · LAX 20:20 · JFK 23:20
Developed with CodeLauncher
♥ Do have faith in what you're doing.