腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
原创分享
专栏成员
举报
363
文章
415945
阅读量
34
订阅数
订阅专栏
申请加入专栏
全部文章(363)
node.js(122)
编程算法(81)
javascript(56)
c++(53)
http(39)
linux(38)
socket编程(37)
unix(34)
tcp/ip(32)
数据结构(19)
进程(18)
api(16)
函数(16)
nginx(14)
https(14)
打包(13)
缓存(13)
github(11)
存储(11)
网络安全(10)
内存(10)
udp(9)
v8(7)
单片机(6)
网站(6)
操作系统(6)
事件(6)
线程(6)
原理(6)
task(5)
定时器(5)
队列(5)
内存管理(5)
系统(5)
源码分析(5)
其他(4)
php(4)
json(4)
android(4)
云数据库 Redis(4)
ide(4)
dns(4)
handle(4)
对象(4)
管理(4)
内核(4)
数据(4)
java(3)
c 语言(3)
access(3)
文件存储(3)
express(3)
面向对象编程(3)
npm(3)
allocation(3)
exit(3)
init(3)
io(3)
list(3)
schedule(3)
sleep(3)
socket(3)
链表(3)
连接(3)
异步(3)
源码(3)
lua(2)
bash(2)
react(2)
html(2)
ecmascript(2)
git(2)
消息队列 CMQ 版(2)
开源(2)
安全(2)
kafka(2)
sdk(2)
rust(2)
bind(2)
block(2)
gc(2)
profile(2)
sample(2)
struct(2)
sys(2)
timeout(2)
timer(2)
遍历(2)
布局(2)
服务器(2)
监控(2)
性能(2)
异常(2)
负载均衡(1)
bootstrap(1)
xml(1)
arm(1)
云数据库 SQL Server(1)
sql(1)
apache(1)
云函数(1)
SSL 证书(1)
腾讯云测试服务(1)
爬虫(1)
spring boot(1)
hashmap(1)
rpc(1)
uml(1)
数据分析(1)
数据处理(1)
物联网(1)
腾讯云开发者社区(1)
utf8(1)
小程序·云开发(1)
add(1)
alarm(1)
area(1)
async(1)
attr(1)
bitmap(1)
boolean(1)
client(1)
clone(1)
combine(1)
counter(1)
cpu(1)
data(1)
debug(1)
default(1)
double(1)
epoll(1)
error(1)
event(1)
fill(1)
filter(1)
fork(1)
free(1)
func(1)
glibc(1)
handler(1)
heap(1)
int(1)
intel(1)
ip(1)
join(1)
load(1)
location(1)
map(1)
mmap(1)
mutex(1)
nan(1)
null(1)
parent(1)
pipe(1)
post(1)
process(1)
queue(1)
release(1)
repeat(1)
scope(1)
space(1)
state(1)
stream(1)
swap(1)
tcp(1)
thread(1)
token(1)
trace(1)
trie(1)
x86(1)
变量(1)
测试(1)
插件(1)
多线程(1)
集合(1)
垃圾回收(1)
生命周期(1)
数组(1)
同步(1)
通信(1)
异常处理(1)
优化(1)
指针(1)
状态机(1)
搜索文章
搜索
搜索
关闭
进程的执行和挂起
tcp/ip
unix
linux
数据结构
单片机
进程是对逻辑的抽象,我们从操作系统的书籍中对进程有了很多的认识,但是对进程的实现可能不太了解,这篇文章尝试解释一下关于进程实现的大致原理。 进程的实现,其实和我们平时写代码的时候一样,比如我们要表示一个东西,我们会定义一个数据结构。进程也不例外。所以进程的本质就是一个数据结构,他保存了一系列的数据。操作系统以数组或者链表的形式和全部的进程管理起来。进程可以说分为两种 1 系统初始化时第一个进程, 2 除了第一个进程外的其他进程,他们都是由fork或者fork+execute系统调用创建出来的。 我们首先看一下进程的结构体都有什么信息。
theanarkh
2020-04-01
1.7K
0
理解进程的新建和执行过程
unix
单片机
数据结构
本文以linux0.11版本为基础,分析进程的内存布局,现代版本已经发生比较大的变化,都是很多原理都是类似的。 系统维护了一个全局的数据结构叫GDT( Global Descriptor Table),他保存了所有进程的代码段数据段的一些信息。系统有专门的寄存器保存了GDT的地址,叫GDTR。GTDR的格式如下。
theanarkh
2020-03-12
739
0
从linux0.11看一个进程的诞生
unix
单片机
这一篇大致说一下进程的创建,有兴趣的可以参考之前的一些文章或者直接上代码https://github.com/theanarkh/read-linux-0.11。
theanarkh
2020-02-25
1.5K
0
linux信号处理源码分析(基于linux0.11)
unix
tcp/ip
linux
单片机
linux的信号处理时机在系统调用结束后。这里以fork系统调用函数为例子讲解这个过程。下面是fork函数的定义。
theanarkh
2019-09-02
4.6K
2
通过linux0.11源码理解进程的虚拟地址、线性地址、物理地址
unix
单片机
tcp/ip
进程的地址有三种,分别是虚拟地址(逻辑地址)、线性地址、物理地址。在分析之前先讲一下进程执行的时候,地址的解析过程。在保护模式下,段寄存器保存的是段选择子,当进程被系统选中执行时,会把tss和ldt等信息加载到寄存器中,tss是保存进程上下文的,ldt是保存进程代码和数据段的首地址偏移以及权限等信息的。假设当前执行cs:ip指向的代码,系统根据ldt的值从gdt中选择一个元素,里面保存的是idt结构的首地址。然后根据cs的值选择idt表格中的一项,从而得到代码段的基地址和限长,用基地址加上ip指向的偏移得到一个线性地址,这个线性地址分为三个部分,分别是页目录索引,页表索引,物理地址偏移。然后到页目录吧和页表中找到物理地址基地址,再加线性地址中的偏移部分,得到物理地址。下面我们看看这些内容是怎么设置的,使得执行的时候能正确找到我们想要的地址去执行代码。我们从fork函数开始。到进程被调度执行时所发生的事情。fork函数的具体调用过程之前已经分析过。下面贴一下主要的代码。
theanarkh
2019-04-24
1.5K
0
linux0.11系统调用过程和fork源码解析
单片机
tcp/ip
unix
所以执行fork函数就会执行system_call函数,但是在这之前,还有些事情需要做,就是保存现场。下面是操作系统执行系统调用前,在内核栈里保存的寄存器,这个压入的寄存器和iret中断返回指令出栈的寄存器是对应的。其中ip指向的是调用系统调用返回后的下一句代码。
theanarkh
2019-04-24
1.4K
0
没有更多了
社区活动
【纪录片】中国数据库前世今生
穿越半个世纪,探寻中国数据库50年的发展历程
立即查看
Python精品学习库
代码在线跑,知识轻松学
立即查看
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
立即体验
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
立即查看
领券
问题归档
专栏文章
快讯文章归档
关键词归档
开发者手册归档
开发者手册 Section 归档