管道 匿名管道和命名管道,在Linux下“|”就是匿名管道,命名管道可以使用命令mkfifo创建。
消息队列 每个消息体规定大小快,发送方和接收方约定好消息类型或者正文格式,对于大数据不友好
共享内存 申请一块虚拟空间,不同的进程通过这块虚拟空间映射到相同的物理空间,缺点是读写覆盖问题。
信号量 主要是上锁,考虑到一份共享资源只有一个进程使用。
信号 每个信号设置相应的函数,进程发送信号给另一进程,另一进程将执行相应的...
1. 进程标识符在前面进程描述一章节里已经介绍过进程的两个基本标识符pid和ppid,现在将详细介绍进程的其他标识符。每个进程都有非负的整形表示唯一的进程ID。一个进程终止后,其进程ID就可以再次使用了。如下是一个典型进程的ID及其类型和功能。进程名:swapper (交换进程),进程ID:0,类型:系统进程,作用:它是内核的一部分,不执行磁盘上的程序,是调度进程。进程名:init(init进程),进程ID:1,类型:用户进程 ,作用:...
进程与程序
一个正在被运行的程序就称之为进程,是程序具体执行过程,一种抽象概念进程来自于操作系统
多进程:多个正在运行的程序.
测试:
import timewhile True: time.sleep(1)
多次运行该文件,就会产生多个python.exe进程,可以通过tasklist来查看运行的程序
PID和PPID
pid:系统会给每一个进程分配一个进程编号
验证:
tasklist 用于查看所有的进程信息
taskkill /f /pid pid 该命令可以用于结束指定进程
# 在python中可以...
#include <semaphore.h>int main(void)
{int pfds[2];char buff[20];sem_t sem;sem_init(&sem, 1, 1);pipe(pfds);if (!fork()) {printf("Child: Waiting to acquire semaphore\n");sem_wait(&sem);printf("child acquires lock\n");sleep(5);write(pfds[1], "Hello", 6); /* make stdout same as pfds[1] */close(pfds[0]); /* we don't need this */printf("child releases lock\n");sem_post(&sem);}else {printf("Parent: Wai...
说明
线程是如何创建,进程是如何创建的。
TCB基础知识
TCB主要是任务管理和group管理的内容task_group_s
task_group_s {进程id
组id
信号资源
消息队列
文件句柄
soket句柄
}struct tcb_s
struct tcb_s
{任务的基本信息,名字
wait信号量
信号部分
}一共3种类型的TCBdefine TCB_FLAG_TTYPE_TASK (0 << TCB_FLAG_TTYPE_SHIFT) /* Normal user task */
define TCB_FLAG_TTYPE_PTHREAD (1 << TCB_FLAG_TTYPE_SHIFT) /* User...
进程间通信的方式有管道、信号、信息量、消息队列、共享内存、套接字
1)管道:无名管道和有名管道
无名管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用.进程的亲缘关系一般指的是父子关系。无名管道一般用于两个不同进程之间的通信。当一个进程创建了一个管道,并调用fork创建自己的一个子进程后,父进程关闭读管道端,子进程关闭写管道端,这样提供了两个进程之间数据流动的一种方式。
有名管道也是...
进程的起源程序就是一个指令序列
在程序执行的过程中,需要将其放入内存中之后才会被CPU所处理。早期的计算机中只支持单道程序,所以计算机中的所有资源都只被这一个程序所享有,包括内存。所以内存只供当前运行的程序所使用。内存被划分为程序段和数据段,程序段用于存放程序代码,数据段则用于存放程序中的数据。因为只有一个程序,所以很容易就能在内存中找到相应的程序段和内存段
然而随着计算机的发展,开始运行多道程序,即同...
0.shell进程替换的用法
1.使用进程替换的必要性
2.进程替换的本质
进程替换和命令替换非常相似。命令替换是把一个命令的输出结果赋值给另一个变量,例如dir_files=`ls -l`或date_time=$(date);而进程替换则是把一个命令的输出结果传递给另一个(组)命令。
0.shell进程替换的用法写法含义注意点本质<(commands)它借助于输入重定向,可以将它的输出结果作为另一个命令的输入commands 是一组命令列表,多个命令之间以分号;分隔。
注...
一,背景知识进程即正在执行的一个过程。进程是对正在运行程序的一个抽象。进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一。操作系统的其他所有内容都是围绕进程的概念展开的。所以想要真正了解进程,必须事先了解操作系统,点击进入 PS:即使可以利用的cpu只有一个(早期的计算机确实如此),也能保证支持(伪)并发的能力。将一个单独的cpu变成多个虚拟的cpu(多道技术...
本节是操作系统系列教程的第二篇文章,属于操作系统第一章即基础篇,在真正开始操作系统相关章节前在这一部分回顾一些重要的主题,算是温故知新吧,以下是正文。
到目前为止,你肯定已经见过很多次这两个词了,“程序”“进程”。那程序和进程到底有什么区别呢。
程序是一个静态的概念。
进程是一个动态的概念。
我们用一个例子来形象的讲解一下这个区别。程序其实本质上和我们的菜谱非常类似,一个菜谱规定了完成一道菜的整个流程...
目录进程管理命令-ps进程管理命令-top什么是中断kill 信号管理进程优先级后台进程管理
进程管理命令-ps
## ps aux
a:查看所有的终端进程
x:查看所有的非终端进程
u:显示进程的用户
f:查看子进程
[root@qls ~]# ps auxf|grep nginx
o:自定义查看想要看的字段
[root@qls ~]# ps axo user,pid,%cpu,%mem,command
--sort:排序,可以根据ps的所有字段
[root@zls ~]# ps aux --sort %cpu## 查看pid的额外命令
[root@qls ~]# pgrep ...
oracle 10服务一启动 TNSLSNR.exe 会占用8080端口,我们知道tomcat的默认端口也是8080,这时,需要改一下端口: 用oracle提供的包: -- 把HTTP/WEBDAV端口从8080改到8081 SQL> call dbms_xdb.cfg_update(updateXML(dbms_xdb.cfg_get(), /xdbconfig/sysconfig/protocolconfig/httpconfig/http-port/text(),8081)) / -- 把FTP端口从2100改到2111 SQL> call dbms_xdb.cfg_update(updateXML(dbms_xdb.cfg_get(), /xdbconfig/sysconfig/...
进程:
假如有两个程序A和B,程序A在执行到一半的过程中,需要读取大量的数据输入(I/O操作), 而此时CPU只能静静地等待任务A读取完数据才能继续执行,这样就白白浪费了CPU资源。 是不是在程序A读取数据的过程中,让程序B去执行,当程序A读取完数据之后,让 程序B暂停,然后让程序A继续执行? 当然没问题,但这里有一个关键词:切换 既然是切换,那么这就涉及到了状态的保存,状态的恢复,加上程序A与程序B所需要的...
Java 9 这个版本对进程管理方面的改进也是相当大的。在为数不多的几次 Java 项目中,有偶尔用到多线程,但对多进程和进程方面的了解还真是太少。
我想,大部分人应该跟我一样,在编程之外知道有进程的东西的存在,在 Java 中反而会忽视,因为多线程和并发 ( Concurrency ) 的存在感更强吧。
这次 Java 9 对进程管理的改进主要是提供了 ProcessHandle 类
ProcessHandle 类
该类在 java.lang 包中,且处于 java.base 模块中。
Proces...
背景
在启动dpdk多进程实例的时候,发现两个进程相互切换启动时,有一个进程必报无法申请足够的连续的大页数,导致dpdk主进程启动失败。
需求:
解决dpdk无法申请足够的连续大页数,让两个进程切换时都可以正常启动。
解决方案:
1:首先整理一套干净的环境。即重启服务器即可,因为一般情况下配置的大页数据都是临时的,不具备永久性。如果需要配置永久性的大页,需要在启动项的grub里配置,具体博友们可以自行查阅资料。
2:查看...