2021-2022-1 20212802《Linux内核原理与分析》第七周作业
一 、Linux内核创建一个新进程的过程
1. 相关知识
- 操作系统内核三大功能是进程管理,内存管理,文件系统,最核心的是进程管理
- linux 进程的状态和操作系统原理的描述进程状态有所不同,比如就绪状态和运行状态都是TASK_RUNNING。(这个表示它是可运行的,但是实际上有没有在运行取决于它是否占有 CPU )
- fork 被调用一次,能够返回两次。在父进程中返回新创建子进程的 pid;在子进程中返回 0
- 调用 fork 之后,数据、堆、栈有两份,代码仍然为一份(这个代码段成为两个进程的共享代码段)。当父子进程有一个想要修改数据或者堆栈时,两个进程真正分裂。
2. 内核代码分析
SYSCALL_DEFINE0(fork)
{
#ifdef CONFIG_MMUreturn do_fork(SIGCHLD, 0, 0, NULL, NULL);
#elsereturn -EINVAL;
#endif
}
SYSCALL_DEFINE0(vfork)
{return do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD, 0,0, NULL, NULL);
}
#ifdef __ARCH_WANT_SYS_CLONE
#ifdef CONFIG_CLONE_BACKWARDS
SYSCALL_DEFINE5(clone, unsigned long, clone_flags, unsigned long, newsp,int __user *, parent_tidptr,int, tls_val,int __user *, child_tidptr)
#elif defined(CONFIG_CLONE_BACKWARDS2)
SYSCALL_DEFINE5(clone, unsigned long, newsp, unsigned long, clone_flags,int __user *, parent_tidptr,int __user *, child_tidptr,int, tls_val)
#elif defined(CONFIG_CLONE_BACKWARDS3)
SYSCALL_DEFINE6(clone, unsigned long, clone_flags, unsigned long, newsp,int, stack_size,int __user *, parent_tidptr,int __user *, child_tidptr,int, tls_val)
#else
SYSCALL_DEFINE5(clone, unsigned long, clone_flags, unsigned long, newsp,int __user *, parent_tidptr,int __user *, child_tidptr,int, tls_val)
#endif
{return do_fork(clone_flags, newsp, 0, parent_tidptr, child_tidptr);
}
#endif
通过上面的代码可以看出 fork、vfork 和 clone 三个系统调用都可以创建一个新进程,而且都是通过 do_fork 来创建进程,只不过传递的参数不同。
(1)do_fork
long do_fork(unsigned long clone_flags, unsigned long stack_start,unsigned long stack_size, int __user *parent_tidptr,int __user *child_tidptr)
首先了解一下 do_fork () 的参数:
- clone_flags:子进程创建相关标志,通过此标志可以对父进程的资源进行有选择的复制。
-
stack_start:子进程用户态堆栈的地址。
-
regs:指向 pt_regs 结构体(当系统发生系统调用时,pt_regs 结构体保存寄存器中的值并按顺序压入内核栈)的指针。
-
stack_size:用户态栈的大小,通常是不必要的,总被设置为0。
-
parent_tidptr 和 child_tidptr:父进程、子进程用户态下 pid 地址。
为方便理解,下述为精简关键代码:
struct task_struct *p; //创建进程描述符指针int trace = 0;long nr; //子进程pid...p = copy_process(clone_flags, stack_start, stack_size, child_tidptr, NULL, trace); //创建子进程的描述符和执行时所需的其他数据结构if (!IS_ERR(p)) //如果 copy_process 执行成功struct completion vfork; //定义完成量(一个执行单元等待另一个执行单元完成某事)struct pid *pid;...pid = get_task_pid(p, PIDTYPE_PID); //获得task结构体中的pidnr = pid_vnr(pid); //根据pid结构体中获得进程pid...// 如果 clone_flags 包含 CLONE_VFORK 标志,就将完成量 vfork 赋值给进程描述符中的vfork_done字段,此处只是对完成量进行初始化if (clone_flags & CLONE_VFORK) {p->vfork_done = &vfork;init_completion(&vfork);get_task_struct(p);}wake_up_new_task(p); //将子进程添加到调度器的队列,使之有机会获得CPU/* forking complete and child started to run, tell ptracer */...// 如果 clone_flags 包含 CLONE_VFORK 标志,就将父进程插入等待队列直至程直到子进程释调用exec函数或退出,此处是具体的阻塞if (clone_flags & CLONE_VFORK) {if (!wait_for_vfork_done(p, &vfork))ptrace_event_pid(PTRACE_EVENT_VFORK_DONE, pid);}put_pid(pid);} else {nr = PTR_ERR(p); //错误处理}return nr; //返回子进程pid(父进程的fork函数返回的值为子进程pid的原因)
}
do_fork()主要完成了调用 copy_process() 复制父进程信息、获得pid、调用 wake_up_new_task 将子进程加入调度器队列,为之分配 CPU、通过 clone_flags 标志做一些辅助工作。其中 copy_process()是创建一个进程内容的主要的代码。
(2)copy_process
static struct task_struct *copy_process(unsigned long clone_flags,unsigned long stack_start,unsigned long stack_size,int __user *child_tidptr,struct pid *pid,int trace)
{int retval;struct task_struct *p;...retval = security_task_create(clone_flags);//安全性检查...p = dup_task_struct(current); //复制PCB,为子进程创建内核栈、进程描述符ftrace_graph_init_task(p);···retval = -EAGAIN;// 检查该用户的进程数是否超过限制if (atomic_read(&p->real_cred->user->processes) >=task_rlimit(p, RLIMIT_NPROC)) {// 检查该用户是否具有相关权限,不一定是rootif (p->real_cred->user != INIT_USER &&!capable(CAP_SYS_RESOURCE) && !capable(CAP_SYS_ADMIN))goto bad_fork_free;}...// 检查进程数量是否超过 max_threads,后者取决于内存的大小if (nr_threads >= max_threads)goto bad_fork_cleanup_count;if (!try_module_get(task_thread_info(p)->exec_domain->module))goto bad_fork_cleanup_count;...spin_lock_init(&p->alloc_lock); //初始化自旋锁init_sigpending(&p->pending); //初始化挂起信号 posix_cpu_timers_init(p); //初始化CPU定时器···retval = sched_fork(clone_flags, p); //初始化新进程调度程序数据结构,把新进程的状态设置为TASK_RUNNING,并禁止内核抢占...// 复制所有的进程信息shm_init_task(p);retval = copy_semundo(clone_flags, p);...retval = copy_files(clone_flags, p);...retval = copy_fs(clone_flags, p);...retval = copy_sighand(clone_flags, p);...retval = copy_signal(clone_flags, p);...retval = copy_mm(clone_flags, p);...retval = copy_namespaces(clone_flags, p);...retval = copy_io(clone_flags, p);...retval = copy_thread(clone_flags, stack_start, stack_size, p);// 初始化子进程内核栈...//若传进来的pid指针和全局结构体变量init_struct_pid的地址不相同,就要为子进程分配新的pidif (pid != &init_struct_pid) {retval = -ENOMEM;pid = alloc_pid(p->nsproxy->pid_ns_for_children);if (!pid)goto bad_fork_cleanup_io;}...p->pid = pid_nr(pid); //根据pid结构体中获得进程pid//若 clone_flags 包含 CLONE_THREAD标志,说明子进程和父进程在同一个线程组if (clone_flags & CLONE_THREAD) {p->exit_signal = -1;p->group_leader = current->group_leader; //线程组的leader设为子进程的组leaderp->tgid = current->tgid; //子进程继承父进程的tgid} else {if (clone_flags & CLONE_PARENT)p->exit_signal = current->group_leader->exit_signal;elsep->exit_signal = (clone_flags & CSIGNAL);p->group_leader = p; //子进程的组leader就是它自己p->tgid = p->pid; //组号tgid是它自己的pid}...if (likely(p->pid)) {ptrace_init_task(p, (clone_flags & CLONE_PTRACE) || trace);init_task_pid(p, PIDTYPE_PID, pid);if (thread_group_leader(p)) {...// 将子进程加入它所在组的哈希链表中attach_pid(p, PIDTYPE_PGID);attach_pid(p, PIDTYPE_SID);__this_cpu_inc(process_counts);} else {...}attach_pid(p, PIDTYPE_PID);nr_threads++; //增加系统中的进程数目}...return p; //返回被创建的子进程描述符指针P...
}
copy_process 主要完成了调用 dup_task_struct 复制当前的 task_struct、信息检查、初始化、把进程状态设置为 TASK_RUNNING、复制所有进程信息、调用 copy_thread 初始化子进程内核栈、设置子进程pid。
(3)dup_task_struct
static struct task_struct *dup_task_struct(struct task_struct *orig)
{struct task_struct *tsk;struct thread_info *ti;int node = tsk_fork_get_node(orig);int err;tsk = alloc_task_struct_node(node); //为子进程创建进程描述符...ti = alloc_thread_info_node(tsk, node); //实际上是创建了两个页,一部分用来存放 thread_info,一部分就是内核堆栈...err = arch_dup_task_struct(tsk, orig); //复制父进程的task_struct信息...tsk->stack = ti; // 将栈底的值赋给新结点的stacksetup_thread_stack(tsk, orig);//对子进程的thread_info结构进行初始化(复制父进程的thread_info 结构,然后将 task 指针指向子进程的进程描述符)...return tsk; // 返回新创建的进程描述符指针...
}
(4)copy_thread
dup_task_struct 只是为子进程创建一个内核栈,copy_thread 才真正完成赋值。
int copy_thread(unsigned long clone_flags, unsigned long sp,unsigned long arg, struct task_struct *p)
{struct pt_regs *childregs = task_pt_regs(p);struct task_struct *tsk;int err;p->thread.sp = (unsigned long) childregs;p->thread.sp0 = (unsigned long) (childregs+1);memset(p->thread.ptrace_bps, 0, sizeof(p->thread.ptrace_bps));if (unlikely(p->flags & PF_KTHREAD)) {/* kernel thread */memset(childregs, 0, sizeof(struct pt_regs));p->thread.ip = (unsigned long) ret_from_kernel_thread; //如果创建的是内核线程,则从ret_from_kernel_thread开始执行task_user_gs(p) = __KERNEL_STACK_CANARY;childregs->ds = __USER_DS;childregs->es = __USER_DS;childregs->fs = __KERNEL_PERCPU;childregs->bx = sp; /* function */childregs->bp = arg;childregs->orig_ax = -1;childregs->cs = __KERNEL_CS | get_kernel_rpl();childregs->flags = X86_EFLAGS_IF | X86_EFLAGS_FIXED;p->thread.io_bitmap_ptr = NULL;return 0;}*childregs = *current_pt_regs();//复制内核堆栈(复制父进程的寄存器信息,即系统调用SAVE_ALL压栈的那一部分内容)childregs->ax = 0; //子进程的eax置为0,所以fork的子进程返回值为0...p->thread.ip = (unsigned long) ret_from_fork;//ip指向 ret_from_fork,子进程从此处开始执行task_user_gs(p) = get_user_gs(current_pt_regs());...return err;
4. gdb调试
在刚才分析的关键点处分别设置断点:
现在 sys_clone 停下,再在 do_fork 停下,继续单步执行:
继续在 copy_process 停下,在 copy_thread 处停下,在这个地方可以查看 p 的值:
最后 ret_from_fork 跟踪到 syscall_exit 后无法继续。
二、总结
进程的创建过程大致是复制进程描述符、一一复制其它进程资源(采用写时复制技术)、分配子进程的内核堆栈并对内核堆栈关键信息进行初始化。
问题是fork、vfork、clone这三种系统调用的不同,通过查阅资料发现:
- fork():子进程拷贝父进程的数据段,代码段,父子进程的执行次序不确定;
- vfork():创建的子进程与父进程共享数据段,而且子进程将先于父进程运行;
- clone():是则可以将父进程资源有选择地复制给子进程,而没有复制的数据结构则通过指针的复制让子进程共享。
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 最新的全球编程语言,操作系统,web服务器等使用率分析报告
由www.w3techs.com 根据alexa排名前100万的网站数据给出的分析报告,并每天持续更新。 1.服务器端编程语言排名http://w3techs.com/technologies/overview/programming_language/all点评:PHP是最高的,说明目前php是主流,但是asp.net也还是有21%的市场份额,看来微软还是有一…...
2024/4/14 23:38:54 - 03 IP地址你不得不知道的事儿
IP地址就像现实中的地址,可以标识网络中的一个节点,数据就是通过它来找到目的地(如何找到的,《关于地址解析协议(Address Resolution Protocol)的那些事儿》)。 因为ip地址是二进制表示…...
2024/4/26 10:51:56 - wordpress 自动为文章添加标签内链
WordPres标签是一个好功能,善用标签不但可以加强文章间的关联性提升用户体验,也可以借助标签加强站内SEO内链。 以下内容使用方法: 将代码添加至主题functions.php文章中即可。 WordPress文章自动添加标签: /* 自动为文章添加标签 */ add_a…...
2024/4/14 23:38:44 - 测试题(2)
编程题 设计游戏场景 红色胶囊是玩家(摄像机对象在玩家对象下面,摄像机放置到玩家头顶)蓝色和黄色的门的自动门pos01、pos02是克隆位置设计游戏策略 通过键盘水平垂直键(WSAD)控制玩家移动按下B键,蓝色自动…...
2024/4/20 9:51:42 - 网络编程(一)——浅析web服务器与浏览器的实现原理
我们基本每天都在通过WEB浏览器,去浏览一些新闻,看看视频之类的。众所周知,这就是所谓的B/S结构(Browser/Server,浏览器/服务器模式),是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。那顺道就来简单的看一下,所谓的Web服务器(例如知名的Tomcat)与…...
2024/4/14 23:38:49 - stm32中断方式和DMA方式完成串口通信
这里写目录标题中断知识点HAL库 GPIO函数库讲解HAL库串口通信DMA知识外部中断点亮led串口中断通信串口DMA收发数据测试DMA传输总结参考文献中断知识点 EXTI0 至 EXTI15 用于 GPIO ,通过编程控制可以实现任意一个 GPIO 作为 EXTI 的输入源。 EXTI0 可以通过 AFIO 的外…...
2024/4/14 23:39:04 - 再给我里两分钟,让我把记忆结成DML和DDL
DML和DDLDML语言一、 插入二、删除truncate和delete的区别(面试题)三、修改DDL语言二、表的管理(2)修改表(3)删除表(4)复制表三、数据类型(可讲可不讲,我不讲…...
2024/4/14 23:38:49 - ELK常用命令和语法
Elastic Search 安装 # 下载安装包 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.2.1-linux-x86_64.tar.gz # 解压修改文件夹名 tar -zxvf elasticsearch-7.2.1-linux-x86_64.tar.gz -C ../servers/ mv elasticsearch-7.2.1/ elasticsearch # …...
2024/4/14 23:39:09 - 尚医通项目学习笔记Part2
尚医通项目学习笔记2一、目前学习进度二、项目学习笔记1.MongoDB2.Nacos3.相关接口以及网关三.阶段小总一、目前学习进度 完成了医院上传接口、医院管理、科室管理、排班管理的前后端搭建。 二、项目学习笔记 1.MongoDB MongoDB是一种非关系型的数据库,它具有对…...
2024/4/17 23:27:52 - 杭电OJ/ACM 2043 密码
密码 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 100739 Accepted Submission(s): 40246 Problem Description网上流传一句话:"常在网上飘啊,哪能不挨刀啊~"。其实要想…...
2024/4/14 23:38:54 - 免密登录以及设置代理和正则表达式
requests免密登录 一些需要登陆才能获取网页内容的网站,我们需要在请求的时候在请求头headers里面添加cookie来跳过登录,然后再获取网页内容。 而这里的cookie值需要我们先登录该网站之后在用获取user-agent属性的地方在requests里面获取cookie值…...
2024/4/7 2:21:38 - Sobel算子实例
Sobel算子 是离散微分算子(discrete differentiation operator ) ,用来计算图像灰度的近似梯度 Soble算子功能集合高斯平滑和微分求导,又被称为一阶微分算子,求导算子,在水平和垂直两个方向上求导,得到图像x方法与y方向梯度图像 …...
2024/4/7 2:21:37 - python中append和extend的不同(简单易懂)
append()和extend()虽然都是用来添加数据的,但本质并不相同,理由如下: list.append(obj):在列表末尾添加新的对象,也就是说他在添加的时候是把数据当成一个整体添加的,它可以添加任意类型的数据 示例如下…...
2024/4/14 23:39:40 - leetcode广度优先搜索的代码框架实现
leetcode BFS的代码框架实现的题目 学习心得: 算法小抄里面有这样的一句话,对二叉树的操作可以衍生出很多算法思想,题刷的越来越多,体会也就越来越多在二叉树遍历也也是两种形式,DFS和BFS,DFS中包含了前中后序的三种遍历形式,BFS只有层级遍历这一种,层级遍历分类型,应用不同数…...
2024/4/14 23:40:05 - 打印100-200之间的素数
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> //打印100-200之间的素数 int is_prime(int n) { int j 0; for (j 2; j < n; j) { if ("n % j 0") { return 0; } } return 1; } int …...
2024/4/14 23:39:35 - 阿里图表库的使用
使用阿里图标库 iconfont 1.登录 阿里图标库网站 2.保存图标 搜索物品保存到购物车或者收藏 可以到我的页面中找到收藏的图标将图标收藏到一个项目中一起下载(没有项目就新建一个 便于以后使用) 下载图标 进入我的页面找到保存的项目图标 点击下载…...
2024/4/21 15:55:38 - mas714 笔记:undecidability
1 回顾: recursive 和 recursively enumerable 1.1 递归可枚举语言 Recursively Enumerable (r.e.) Languages {L | there is a TM M such that L(M) L} ——>这种语言的描述是不好的,如果语言w是图灵机TM可接受的,那么我们通过这种定…...
2024/4/7 2:21:32 - Matlab数字孪生
使用数字孪生体进行预测性维护 使用数字孪生体进行预测性维护 - MATLAB & Simulink...
2024/4/14 23:39:50 - 树莓派---GPIO应用详解业翔
GPIO基本介绍 GPIO(General Purpose I/O Ports)意思为通用输入/输出端口,通俗地说,就是一些引脚,可以通过它们输出高低电平或者通过它们读入引脚的状态-是高电平或是低电平。GPIO是个比较重要的概念,用户可…...
2024/4/14 23:39:40 - Java 平台反应式编程(Reactive Programming)入门
最近的一段时间里,反应式编程在社区中得到了很大的关注。从Java社区来说,Java 9把反应式流规范以java.util.concurrent.Flow 类的形式添加到了标准库中。Spring 5 已经支持了反应式编程实践,并提供了 WebFlux 这样的 Web 编程框架。其他语言也都有类似的反应式编程框架,如 …...
2024/4/24 23:06:12
最新文章
- AI人才争夺战,华尔街入局:豪掷百万美元年薪抢人 | 最新快讯
量子位公众号 QbitAI 继硅谷之后,华尔街也入局“AI 人才争夺大战”。 他们的目标非常明确——抢的就是高精尖的 AI 专家。 △图源:Business Insider 现在这条“街”上,不论是银行、对冲基金还是私募股权公司都已纷纷下场,可谓是豪…...
2024/5/7 3:05:28 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/5/6 9:38:23 - 《c++》多态案例一.电脑组装
一.代码展示 #include <iostream> using namespace std; class CPU { public://抽象计算函数virtual void calculate() 0;};class CVideoCard { public://抽象显示函数virtual void display() 0;}; class Memory { public://抽象存储函数virtual void storage() 0;};…...
2024/5/5 8:48:19 - 【虚幻引擎】C++ slate全流程开发教程
本套课程介绍了使用我们的虚幻C去开发我们的编辑器,扩展我们的编辑器,设置我们自定义样式,Slate架构设计,自定义我们的编辑器样式,从基础的Slate控件到我们的布局,一步步的讲解我们的的Slate基础知识&#…...
2024/5/6 9:46:04 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/4 23:54:56 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/4 23:54:56 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/5/4 23:54:56 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/6 9:21:00 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/5/4 23:54:56 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/5/4 23:55:05 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/5/4 23:54:56 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/5/4 23:55:16 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/5/4 23:54:56 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/6 1:40:42 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/5/4 23:54:56 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/5/4 23:55:17 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/5/4 23:55:06 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/5/4 23:54:56 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/4 23:55:06 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/5/5 8:13:33 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/5/4 23:55:16 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/5/4 23:54:58 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/6 21:42:42 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/5/4 23:54:56 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57