So yes, so we talked about how the right people were appointed for the task and that way the apostles actually took care of the issue that came, right? Otherwise, what happens? A small issue can actually become a bigger issue and particularly nowadays more than the early church times, we tend to be multicultural no matter where we stay, you know, most of our churches have different cultures and people might have different upbringing and opinions. So if at all there is a difference, right, that kind of rises among the people, it's good for the leaders to deal with it in a very wise way and a quick way so that it does not lead to division or confusion in the church. So once the leaders have done this, what was the result of that? You know, you see the very next verse there, when they laid hands on these seven men, that the word of God spread and the number of the disciples multiplied greatly in Jerusalem and a great many of the priests were obedient to the faith, wow. So then we deal with things well in the church and in this case, the administrative aspects. What did it do? Even that brought growth to the church, okay? So having things in order, solving problems, in addition to preaching, teaching, demonstrating the power of the kingdom, everything is bringing growth to the church. So again, we see that God's word spread. So it's amazing, the work of God is continuing, the leaders are serving faithfully. Now let's go further. Now this portion of the chapter, chapter 6 and continuing into chapter 7, it's more about this individual called as Stephen, okay? What is the description that we see about Stephen? Yeah, sorry about that class, there's some power issue here so it keeps getting disconnected. Anyway, so we're back. So not to worry, I'll just pick up from where I stopped. I was just telling you that God was working miracles, wonders, signs through everyone, not just the apostles. So Stephen was one such man. Then what happened is, it also seems like he was a man who was like, you know, he was able to speak well, okay? So earlier we saw a person with wisdom. So it looks like he went to the synagogue and over there he was able to present his thoughts and also argue for, you know, his ideas. So he, at that point, it says there arose some from a particular synagogue, synagogue of Friedman, where you had, you know, Sirenians, Alexandrians and those from Silesia and Asia. They were disputing with Stephen. You know, in the synagogue you could ask your questions, right? Like anybody can ask a question and then that would be answered. So it was a place of discussion and in this case it seems like there was a dispute about going on between Stephen and these learned men, okay? And there were people from different regions.  So the people would have, you know, this was said about Jesus also. People used to wonder when he spoke, they used to wonder what authority, you know, how is this man speaking like this by the Holy Spirit? So Stephen was one such man and because he was so right and they couldn't catch him, what did these other men do?  So these men could not get him with the words that he was speaking. So they go ahead and they tell everybody, what do they say? They say, we have heard him speak blasphemous words about Moses and about God. Okay, that's a lie. They say that about him and they stir up the people, they stir up the elders, they stir up, it says, you know, all the learned people, the scribes and once the leaders come to know that how can this, you know, they come to know that Stephen has spoken something wrong about Moses, okay, come on, we have to catch him, we have to punish him. So they seize him, it says, okay, and they also set up false witnesses against him. It's really sad, right, that people will go to any extent to prove a good man as wrong. So in this case, Stephen is stuck in that situation where, you know, people have put false allegations against him. Then they continue, you know, these false witnesses that they have chosen, they continue to say things like, oh, this man, he speaks blasphemous things about the holy place, about the law and also they say that he has also said that Jesus of Nazareth will destroy the holy place. In fact, Jesus only, you know, he had said something earlier but it was in a different context but here the people are misconstruing what Jesus had said.  Now, we need to understand that the Jews were very passionate about Moses and the law of Moses and the customs and all those kind of things. And when such an accusation is being made about an individual, it was quite serious. And so, you know, Stephen is being tried now. Earlier it was Peter and John, then it was all the apostles and now poor volunteer, church volunteer is standing in front of the authorities in such a scary situation. And it's not like he did anything wrong but he is being falsely accused. They have put, you know, they've said that Stephen has claimed all these things which he has never actually claimed. So everyone who sat in the council, verse 15, it says they were looking at him. Or they fixed their gaze on him, steadfastly they were looking at him and you know what? His face was shining as an angel. So even in the trial, even in the difficult time that Stephen found himself in, you know, the glory of God was upon him. And his face shining like an angel, we could only say that the peace of God, the grace of God, the glory of God, you know, covered a child of God in the midst of the opposition. How great our God is, isn't it? Anybody in that situation would be scared.  Nowhere do we read things like that.  Okay, and he is able to speak with incredible clarity that the wise men of his times could not catch him. So they came up with a false allegation and now he's in trouble.  Even in that, there is such a wonderful testimony about Stephen, right? And that really shows us, you know, what a walk with the Lord he had that in a difficult time, authorities, when they're looking at him, he's not shaking, shivering, feeling scared. No, but the authorities are seeing his face as the face of an angel. Okay, and that was the glory of God upon the face of Stephen. Now let's continue and see what exactly happens in the trial of Stephen. Okay, so now he has to answer, right? He has to answer all these questions, false allegations against him. He needs to deal with those things. Okay, right. So then, now the high priest asks him, I have gone to chapter seven. Okay, people have said so many things about you, Stephen. Is it true? That's how the high priest begins the question. Now it is said that it's most likely that the high priest at that time was the same high priest, Caiphus, who had also spoken to Jesus in his trial.  But Stephen is being questioned. Now he has to explain himself. Another thing I want you to notice is the synagogue of Friedman. We saw the regions from where these men came from and you noticed it also says Silesia. Okay, and it is, you know, Paul the Apostle, he's actually from Silesia. So, this is what actually happened, right, that he was part of the trial of Stephen. So, Paul is witnessing what is happening to Stephen. At this point, Apostle Paul, what is his status? He is still a persecutor. Okay, he's still part of the Jewish authorities and he is very much, you know, passionate about the Jewish culture, the Jewish traditions and whatever he has been taught. So, he's part of that synagogue of Silesia and he too could have been one of the people who was engaging in the dispute with Stephen. Okay, so this is kind of the setting and now Stephen has to defend himself. Look at this, there's no lawyer also for him to speak on his behalf.  So, Stephen is full of the Holy Spirit and he tries to answer the question. High Priest said, okay, they said so many things about you Stephen, what do you have to say? And Stephen starts. What is the accusation against Stephen? That he is not respecting the law of Moses, he's going against that, he is claiming that he will destroy the holy place, that he will establish new customs, these are the accusations. Now, what does Stephen say? Defend himself against this false accusation. So, he begins a very sort of a long narration, okay, and we will see where this narration leads. He says, brethren, fathers, listen, the God of glory appeared to our Father Abraham. So, he starts from Abraham. And why do you think he is talking about Abraham? See, Stephen wanted to show them that he is not opposed to the God of the Jews, right? So, Abraham is well respected among the Jewish people. So, he wanted to know, he wanted to tell them that he respects the scriptures, he respects the men of God, he respects the Jewish culture, right? And also, you notice that he's so well versed with the scriptures, okay? He doesn't really fumble at, you know, he doesn't fumble with his words or he doesn't, he's not confused about the scriptures. He's able to clearly narrate from scripture.   So, he narrates that whole thing and then he says, look, after that, you all know what happened for 400 years, the people of God were in bondage, the descendants of Abraham were in bondage to another nation. And at that time, you know, you have, okay, so he goes into a lot of details there, okay? So, I'm not reading through his speech here. So, he talks about how God gave the covenant of circumcision, Abraham begot Isaac and circumcised him on the eighth day and Isaac begot Jacob and Jacob begot the 12 patriarchs. So, you notice he's learned. He is well equipped with scriptures. He's got the details, you know, Mesopotamia, Haran, 12, 12 patriarchs.  And then he says that then came Joseph. Joseph was also in Egypt and everything that Joseph did, there was a famine and that there was great trouble. But, you know, through Joseph, God saved the people. Yeah, and even Joseph's family, so in the famine, Jacob and his sons, they were helped by Joseph, right? So, all this happened, all this happened. So, he narrates the entire, you know, progression of things and then eventually, eventually, he comes to Moses because what is the accusation? That Stephen is not upholding the law of Moses, right? So, that is why he came from Abraham, went all the way, touched on the names of the different patriarchs and now he's come to Moses. And then, you know, Moses, he describes about Moses how it came into his heart after 40 years to free the people of God from the Pharaoh and, you know, Moses gets into that and he steps out, okay? Yeah, and Moses, like the whole thing, there are a lot of details how Moses fled, right? He murdered, he ended up murdering one of the Egyptians who was ill-treating the Jewish person and then he flees to Median and how he stays there and how God speaks to Moses in the burning bush, right? And all of that and Moses responds to God, okay?  So, he does that, okay? And he leads the people of God. So, ultimately, you know, what you find Stephen narrating is, basically he points out and he says that, look, Moses is so well-respected, he was chosen by God to lead the people of God. So, here at verse 37, he says, this is that Moses who said to the children of Israel, the Lord your God will raise up for you a prophet like me from your brethren. Him you shall hear. So, he has come to Moses now and through Moses, you see, in the context, in the Jewish context, he's trying to reveal Christ to the leaders here. So, through all this, he's coming to the point, what is the point? Jesus. Remember, I told you in the early church, they were passionate about preaching the Lord Jesus to the people. Any setting, wherever they found themselves, they would preach Jesus. So, he's come to the point and he's saying, you respect Moses so much and you're offended, you're accusing me that I'm not following the law of Moses and I'm preaching against it. This is the same Moses who said that the Lord our God will raise up for us a prophet like me from your brethren. So, he's referring to the Lord Jesus Christ, okay? And then he says how the people, they actually rejected, even Moses, they rejected. They did not listen to him and they were disobedient to Moses. So, it's as if that is repeating again. But the same people who claim to respect Moses so much, the Jews, they were the ones who first rejected the words of Moses. They were not willing to obey him. And they did so many things against what Moses told them to do. They set up a calf and they made sacrifices to the idol when Moses just went away for a little bit of time. So, he's saying the kind of faithfulness that you are professing to Moses and his law, I don't think the Jewish people really were that faithful to Moses. And it is that Moses who said that there is going to be a prophet just like him.  And yeah, he kind of talks to them against, you know, what they were doing. Okay. Okay. So, I'll read from verse 44. Okay, I'll read from verse 44. Our fathers had the tabernacle of witness in the wilderness, as he appointed instructing Moses to make it according to the pattern that he had seen from our fathers, having received it in turn, also brought with Joshua into the land possessed by the Gentiles whom God drove out before the face of our fathers until the days of David, who found favor before God and asked to find a dwelling for the God of Jacob. But Solomon built him a house. However, the most high does not dwell in temples made with hands, as the prophet says. So, the other point, they said that Stephen is speaking against the holy place of God. Okay. So, now round about, he has touched on Moses and he's showing his proficiency in the scriptures. You know, he talks about David and Solomon and the temple. And then ultimately he comes, look what the prophet says. Basically, the prophet says that how can God dwell in a place, right? A small place.  What house will you build for me, says the Lord? Or what is the place of my rest? Has my hand not made all these things? So, he's addressing those same matters. One was Moses, right? So, he said, I'm not the one who's unfaithful to Moses. You and your people, they were the ones who did not listen to Moses. Now, you're talking about destroying God's house. What are you saying? Okay. God, you can't limit God in a house. So, he's bringing that point through Moses. Now, finally, David, okay, Solomon and he's addressing that matter. And then ultimately, he kind of gets back at them. He was 51. He says, you stiff-necked and uncircumcised in heart and ears. Wow. What a way to address the educated, influential people. And remember, the High Priest is also part of this panel. And he's saying stiff-necked. Stiff-necked means you could understand that as hard-hearted, okay? Not sensitive to receive God's word. Hard-hearted people, stiff-necked and uncircumcised in heart and ears. Now, we know that these Jews, they were so proud about keeping the law, especially circumcision.  From the words that you speak. There is hypocrisy. There are double standards. And that's what he's pointing out here, Stephen. And he's saying, you may be circumcised in body, but your heart, which is what God wants, right? Your heart.  And then it is, we must understand it, right? We receive it into our mind, into our spirit, through our years. But if the years are blocked, or if the understanding of the heart is blocked, the word never goes in. So, you could say that he is angry in saying these words, but I feel like he's very sad. These are the people who know the scriptures, who come and argue in the synagogue. But they have not understood. They know, you know, Abraham and Jacob and Joseph and Moses and all these people. But they didn't get the point. And that's why he's saying, you know, stiff necked, uncircumcised in heart and years, you always resist the Holy Spirit. So, he's saying, what God's spirit wants to minister through the word, you have not received it. Okay? They resisted Moses. When Moses was trying to, you know, do the work of God and give the instruction of God. What did the people do?  In fact, the generation that moved into the promised land was not the generation that Moses brought out of Egypt, because they were so hard hearted and they were so unfaithful to God. So, he's saying, just like those fathers who did not listen, he says, as your fathers did, so do you. So, it's an angry comment, but it's also a very sad comment that they were disobedient. At least you can be better. But, you know, I notice that even you are resisting the work of God. So, he says Holy Spirit here, but basically what he is trying to convey to them is the work of God, by his spirit, what God is doing over the generations. Your father is resisted, now you are resisting. And he says, which of the prophets did your father, or which of the prophets did your fathers not persecute? So, he's trying to justify himself at this point. He's saying, you have put me for trial now. How am I different from Moses whom you didn't believe or, you know, some of the others that you could point out and say, they also struggled, right? Because your people did not believe them. So, the prophets, they all went through a difficult time with you people.  So, you see, he's justifying himself, but at the same time, you know, he never loses the message that the Lord Jesus is Christ. So, he's coming to that. You notice how the apostles, they said, prince and savior, they're introducing Christ, right? Through him, there will be repentance, forgiveness of sins, introducing Christ. Stephen, in his most difficult situation, standing in front of all these learned wise men, he doesn't hesitate to bring forth Jesus. Still now, he mentioned every other name, but now he's coming to the point and he's saying the just one. Who's the just one? The Messiah. Obviously, the Jews know who he is referring to. Then he's saying, everyone who foretold the coming of the Messiah, he's using the term just one here, of whom you now have become the betrayers and murderers. So, he's saying, you betrayed the prophets, you betrayed Moses also, right? And you did not even listen to the prophecies about the Messiah. And you have become betrayers, murderers, who have received the law by the direction of angels and have not kept it. So, he says, how sad? You boast about the law, but you have not kept it. What is important when we have God's word to obey it, right? So, having the word, but being hard hearted towards the word, never really living it out. That is so sad. And with that sadness, he's kind of using these sharp words, stiff necked, uncircumcised in heart and ears, betrayers, murderers, right? To just point to them and say that you have rejected. You've rejected God's word, you've rejected God's people, you've rejected God's prophets, which one of them did you accept easily? And even the just one, and the prophecies about the just one, which is the Messiah, you have rejected. And when Stephen was speaking like this, you know, you hear, then when they heard these things, they were cut to the heart. You remember, we saw this when Peter preached, when he preached the message of Jesus, cut to the heart means you're being touched deeply. So, these authorities also were touched deeply by what Stephen is saying. But in that case, you know, they were touched in a positive way and their response was to accept Christ. But here, they, it hit them, it impacted their hearts, and you see that they gnashed at him with their teeth or, you know, when it causes an injury, somebody speaking the truth and we can't bear it. And because we're not able to receive it, we respond with hatred, we respond with bitterness, anger, right? That is the response that Stephen is getting here.  He said, your accusations are false. Who are you to accuse me?  I have not come to put down the law of Moses. I have not rejected Moses. Moses and the prophets were the ones who talked about Jesus. Basically, Stephen is saying he didn't use the name Jesus, but he said the just one and you have rejected all the prophecies about him. But I am following, right? I am listening. Even though you are listening, you are not receiving it. So, he's pointing out very clearly that their accusations against him are false and that he knows very well. He knows the scriptures very well and these are the same scriptures that are pointing to Jesus in whom he believes. So, he's very bold about it and he has justified himself in a very scholarly, intellectual, right, eloquent way and the people who are listening to him, they are so angry because he hit the nail on the head each time. So, ultimately, he's saying, I'm completely justified. Your accusations are false. I'm not the one who's at fault.  You resist the Holy Spirit and the work which the Holy Spirit is doing. So, they are so angry and let's see what happens after that. So, from verse 55, so when they were angry and reacting to Stephen in this way, you notice Stephen, how was he giving these answers? So beautiful.  Again, it says, full of the Holy Spirit. Stephen is mentioned in these passages, excuse me, and you don't see like in every other place Stephen being mentioned, but what he has mentioned about him, it's so commendable that he really seems like that faithful child of God who is full of wisdom and led by the Holy Spirit. So, again, it says about Stephen, but he, in the midst of this anger and mind you, if you imagine the scene, you have all these influential big men around you. Anything can happen to you, but in the midst of that, his face is like an angel. He's giving them a very clear explanation.  He gazes into heaven and saw the glory of God and Jesus standing at the right hand of God and said, look, I see the heavens opened and the Son of Man standing at the right hand of God. So, he's so connected to the work of the Spirit and the Holy Spirit at that moment. It has completely taken over Stephen and God gives him a vision. God communicates through dreams, through vision. So, Stephen is having a vision at that point and in this vision, he sees the heavens opening, God's glory is there and Jesus is standing at the right hand of the Father. So, it is said about this explanation that Jesus is seated at the right hand of the Father. That's what we read in the Bible.  So, we all know what happens after this, that Stephen is actually martyred. So, when Jesus is standing, it's like God honoring a child who has been faithful to him. Okay? And it's amazing, like in the midst of persecution, sometimes you wonder, how does God respond when his children are going through trials and persecutions? And you notice Jesus is standing in that vision, looking at Stephen, going through the tough times. So, God has not forgotten us. Jesus has not forgotten, you know, men and women and children of God who go through difficult times. In fact, he's watching, he's looking and no longer does it say he was sitting, but he was standing in honor of those who go through persecution. Right?  Right? So, it's amazing. It's amazing.  So, Jesus honors Stephen. And you think about Stephen, you know, what would it have done to him to see a vision of Jesus proudly looking at him? More boldness. Right? No wonder. It says that his face shown like an angel, shining like an angel, because he's right with God. He's in fellowship and communion with God, even at that time. Right? And it's really beautiful. So, let's move on. Verse 57. These people, however, so what's happening between God and Stephen, we understood. Now, what is happening among the people? They have completely, you know, that mob mentality against Stephen. They already spread false accusation and false witnesses. Right? And now with Stephen's explanation, they are angry, ready to get him. And it says they cried out with a loud voice. They stopped the years. They couldn't bear the truth. And they ran at him with one accord. Again, one accord, but for the wrong reason here. Together, they went against him and they cast him out of the city and stoned him. Right? So, this is the martyrdom of Stephen. How sad, how sad that he's speaking the truth. But what did he get for speaking the truth? He was killed.  Right? So, Jesus was standing at the right hand of the Father as if to bless Stephen. And even God knew what he would go through. And then, so they killed him basically. So, they took him out of the city. They stoned him. It says, and the witnesses laid down their clothes at the feet of a young man named Saul. So, remember, I told you, Silesia is the place from where Paul came. And right now he's still Saul. So, it is possible that Paul the Apostle was kind of the leader of the killing of Stephen. So, Paul has witnessed the wisdom, the boldness, the courage, the stability and the commitment of Stephen. He has seen it. And that could have obviously, it says, cut to the heart. And it definitely must have impacted Paul at that time. So, once this person, Stephen was killed, they laid his clothes at Saul's feet. So, Saul led this whole trial against Stephen. And they stoned Stephen as he was calling on God and saying, Lord Jesus, receive my spirit. Then he knelt down and cried out with a loud voice. Lord, do not charge them with this sin. And when he had said this, he fell asleep. Who do you remember? Just like Jesus. Jesus said, Lord, take my spirit. And even for me, it's hard to understand how when you are being treated so badly, you are stoned. Forgive them. Jesus said, forgive them. They don't know what they are doing. Full of the Holy Spirit. See, the fruit of the Spirit, long suffering. And maybe God gave Stephen that understanding that this is a spiritual battle. People are fighting against you, but people are not the enemy. Satan is the enemy. So, Stephen had that understanding and he says, God, please don't charge them. Same way. What is it? Forgive them. Please don't charge them with this sin. What is this sin here? Sin of rejecting the gospel. Sin of murdering a child of God. So he says, I don't know.  They've stoned you. You know that you will not make it. In those last few moments, how many of us will say, okay, God, don't hold this against these murderers? Would we ever say that? It only shows what a work of the Spirit was done in the life of Stephen. And he's actually saying that Lord, do not charge them with this sin. And when he had said this, he fell asleep. And notice here, it says, fell asleep. And this is the promise. First Thessalonian talks about it, you know, that when a believer dies, it's temporary because we experience physical death, but the Spirit and the soul live on. Okay. And Paul said that when I am absent in the body, I'm present with the Lord. So it was as if Jesus was standing up there and saying, Stephen, don't worry, I'm ready to receive you.  And I don't know, I don't know if you will ever know what kind of a welcome Stephen received into heaven because being absent in the body is what being present with the Lord. So Jesus was standing up, right? So we are ready to receive our guests at the door when they're coming.  Right. So I mean, for me, it's even hard to teach this particular chapter, but any thoughts from your side, anything to add anything to, to share any questions, I think it'll be good to just address that. Okay. I see one question here in the chat by Manu. And she says early church was very powerful. They were filled with the Holy Spirit and they received God's power question is in these days, why people are not like early church, why people is not very powerful like early church, Peter Paul. It depends on, you know, what exactly are asking Manu. If you're asking me whether the Holy Spirit is working and people are moving in signs, wonders, miracles, I think it's still true. It's still true. There are a lot of people who are moving in those things. It's just that we don't hear much about it. But yes, you know, the kind of revival that we want to see, I think we should pray for it Manu. And it can happen again and again and again. We know in church history that there have been many times where such revivals have actually taken place. Okay. So we need to pray. We need to ask God that we want to see like the early church, that boldness, that courage and all that. Yeah, sure, sure, sure. Yes. Okay, Aran, heart touching, whatever Stephen. Yes, very true, very true Aran. It's, I don't know, it's like, you can't just read it without feeling, right, what he went through and today there are so many people going through persecution. And we really see the heart of God, you know, God has not forgotten us. God has not forgotten those who are going through persecution for reaching the gospel and doing the right thing. Right. And those who have died and one more thing you notice here in the lives of the apostles, right? I think it was only John who died at a good old age. All the other apostles, they, they were killed.  Really, the way it says, right, witness martyrs even unto death, the early church and the apostles, they carried that kind of boldness, that kind of determination, commitment to the gospel. It was not just about, okay, let's do church, let's have, you know, a gathering, let's do it like this, let's do it like that, let's have a fun time. The commitment is much more than that. What if I die for preaching this truth?  It's, you, you see that commitment in the early church, right? And that's the kind of witness that came about because of the Holy Spirit. So even today we can have that commitment and where does it come from? It comes from the Holy Spirit of God. Okay, so let's rely on the Holy Spirit. Yes, yes, yeah. And by the Holy Spirit we can forgive. That's what we saw Stephen do in the most difficult time in his life. Okay, all right, class, I think we are up, time is up. So let me just say a quick word of prayer and then you can move on because I know even you don't have time. Okay, let's pray. Heavenly Father, we thank and praise you for this time, Lord. And Father, I commit the class into your hands and we thank you, Lord, for your Spirit that ministered the truth about Stephen's life to us and help each one of us, Lord, to grow in our love, in our commitment and like Stephen, Lord, to be filled with the Spirit full of wisdom, Lord, full of faith. And Lord, help us to glorify you, Lord, throughout our lifetime. We give you thanks, we give you praise. We commit everything else that is to take place today into your hands, Father. Bless us, Father. In Jesus' name we pray. Amen, amen, amen. Okay, okay class, please feel free. You can leave, go ahead. The next class, let's meet again next week. Thank you. Thank you, ma'am. Thank you, thank you, bye, bye, bye.


Hi, I'm Sarah Brumfield. I'm one of the volunteers here, and I was the person in the back of the room yesterday who was stressing my opinion on how you can get more women to come in and to like this. And it actually generated a lot of interest in sign conversations, so I thought I might do a lightning talk on it. In addition to having a degree in computer science, my undergrad work, I had a second major in the study of women in gender. So this is actually something that's very near and near in my heart for reasons beyond just being a woman, but the naval gazing line might be the only woman here in part of it as well. So I've done a lot of research and the theory behind it. And what I wanted to do is give you two terms that are useful, because I find when you start naming things, it kind of gives them power, and you can think about things in different ways. The first one is called imposter syndrome. And so one of the theories on why you don't have a lot of women in other countries like this is that they feel like imposters.  And that feeling is something that a lot of people who are underrepresented in groups can feel. And they don't realize that everyone else in the group, particularly people who don't really feel the same way. They assume it's because they are imposters and they don't belong. So in a story on this, when I was in undergrad, the first couple of programming classes, we took, there was always that one guy in the front row who asked the really obnoxious, hard questions. And I was lucky enough to have friends and to be able to identify that as this really obnoxious thing that people do. We actually, Ben in the back room, I ended up marrying, gave it a name, voice of unquestionable authority, which once you named it, you could be like, yeah, he's just V-O-U-A-ing. And even better, the biggest culprit in my classes, I ended up ladding and grading two years later for a class he was taking, and yeah, he didn't have any clue what he was talking about. So that was really useful to find out, just took me two years. And you have to kind of stick with it. And one thing that was suggested is, oh, what can you do about it, or is it your fault? I don't think it's your fault once you're putting bikini clad women on slides, and I'm assuming most of you aren't doing that. But one thing that you, the sort of things that you can do about it are things that kind of cut down on that imposter syndrome feeling. So we at LSRC always have women's t-shirts, and I love that, and I suspect that I'm part of the reason we do that because I've always been here, but it's something that makes you feel very welcome. It's a token, but it's a nice token that kind of gets you a step beyond the, yeah, some of the law here. If you find yourself using things like the VOUA, try not to. Instead, try bringing up problems that you're trying to solve to the table to discussions because problems show humility, but they also, it's cool because you bring your humility in and you actually might get answered. So it's kind of a, if you can take that and become comfortable enough to bring your problems in, it's a cool way to work on the imposter problem. Also just be welcoming, be nice, try to explain things that people don't get, that you get all that. Now the problem with that is, in order for you to do that, people have to show up and there's not that many of us here, right? And so this brings me to my second concept, which we call the pipeline problem. And the idea with the pipeline problem is, to get to a place like LSRC, there's a series of decisions that got you here. And you start out with 50% of the population and at age 12, you decide you don't like math. Boom, you're down to 10% of the population. And then in high school, you decide not to take calculus. Boom, you're down to like five percent of the population. You get in that first programming class because maybe you're interested in it and you drop out after a week because it's really hard and you feel like you're an imposter. And so every stage of this game is if this pipeline gets narrower and narrower and narrower and that just means you get here and there's only 12% of you, which is actually really high. That's about, to end the 10% of what I was saying, like under other computer science programs and other like-minded. We've been working on the pipeline problem for years.  So I don't know, I can tell you, I can define this term and tell you that's what we've been trying to do, but it doesn't work. So what do you do about that? I don't know, I have a couple of ideas. One of them is to look at what you call a second pipeline, which is grownups, people who are figuring out who they are because members are big component of figuring out who you are. At the same time, they're making career decisions. So if you can go find women, so I have a lot of acquaintances who are librarians. A lot of librarians these days are picking out programming, some of them even Ruby. They're doing it because they have a lot of data that they want to deal with, a lot of textual analysis that they want to do because their work is very much online. Time up in one minute. Okay, I also, I work for a very, very large corporation. There's tons of women around. They're not in developer roles, they're in testing roles, they're in support roles. They are technical women. They probably are smart enough, technical enough to pick out programming. You just have to figure out how to transfer them there. And I think they're old enough that they've gotten their work themselves into this. They've learned everything they did on their own. You can combine that with some classes, interactory stuff that, hey, yeah, you could do this if you wanted to. I think you might actually be able to expand that pipeline some more. If you were in Dana's presentation yesterday, she actually came to Ruby after being an AA who munged a lot of data from reports. And this is a good part of the pipeline I haven't even thought about, but she's like, yeah, there's tons of women out there who are dealing with data and coming up with ways to write scripts in Excel. They have the right mindset, they have the right skill set. If you could just take them under your wing somehow and convince them that, yes, they could do this. And I'll leave you with my final point, just the point I made at the back of the room the other day, which is the people you have the most influence on are your daughters and perhaps your wives. Because there's a lot of us here who maybe started out as programmers and then got married to somebody who happens to also be here. But there's a lot of us here I've noticed who are here because their husbands have brought them along and taught them and convinced them that, yes, they could do this. So, that's it.


In this video, I want to discuss the direction of current in a Y configuration, and it's all about instantaneous polarity, much like we talk about in transformers. So I just want to go over the instantaneous polarity of the windings and then how current flows through the load, and finally, how current is going to flow through the neutral. So here we have our transformer, three phase transformer, and then we'll have a three phase load hooked up to it. And we also have a neutral here as well. So this will be our neutral line. So we've got our star point, as we know with the Y configuration, again, these windings are 120 degrees outside of phase with each other, the load same thing. So we're going to discuss how the polarity works on these things, and then discuss the direction of current from that. Now this is the trickiest part of dealing with these, and I find this when I'm dealing with either single phase transformers or three phase transformers, we need to figure out the instantaneous polarity. Now when I'm talking about instantaneous polarity, I'm talking about stopping time to see what polarity each winding is going to be at. Now, just to be for those of you who are going to call me on this, I understand that this winding is not going to be in phase with this winding, which is not going to be in phase with this winding. I get that, that all these polarities are going to be 120 degrees outside of phase with one another. But just for simplicity sake, just to get an understanding, I'm going to treat them all the same. Now, this you can tell by the coils is the transformer side, a transformer is a source, it's a source of voltage. Current flows from positive to negative, from positive to negative through a source. So something's generating this power, and current's going to go across like that, positive to negative through a source. Now as we go along here, we're coming to our load. Current through a load flows from negative to positive. So we have the current being positive to negative from the source, and it goes into negative positive through the load. So I got these big old arrows pointing the direction of the current. So again, positive to negative. And again, I've got the blue arrows denoting the current through the load itself. So this current's coming to this point, current's coming to this point, current's coming to this point, and then what's going to happen is you're going to go through the neutral and head this direction. So now I've got the arrow here showing that as these currents come to this star point, through the neutral, the current is going to travel through that. And just to figure out what the current is going through the neutral, make sure you go to the videos where we discussed how to calculate neutral current. But right now it's just the direction of flow I'm discussing here. So the current's going to flow back through this way and into the actual source. And we can start to see now that current going through the phase is the same as the current going through the line. So the current doesn't change here. Now the current going through the neutral is going to be different. Again, I'll point you towards the video on the current going through the neutral. But at this point right now, we see that current phase is the same as I line. So in a transformer, three phase transformer, your I line is equal to your I phase.


Let's let's get started So how is that body doing in terms of assignments? Which is quite a working on what's that? All of them How many of you have already passed the file only test? Not all of them. I mean the best ones open really right close nobody This is how this is not how it works I mean you are supposed to get together and get a set of files is called working before you move on to process this cause Otherwise, there is there is really no way to test it To run all the test cases you have to have the files is already. Otherwise use a program cannot print Yeah, so you have to get a file is called working before you do process this cause Anyways Yeah, I think so Yeah, not all of them all of them, but I try to upload every slice Yeah, okay, I'll try to upload all of them. I have them. Yeah, okay, so before we talk about Today's process is called. Let's do a first recap of what we talked about last time. So we Go over the file handle design. So what information should go into the file handle basically? The what a flex the user used when user call open. What's the offset? What's the reference count? So why do we need a reference count? Because fire handle could be potentially shared by multiple threads, right? So you need to maintain that account so that when close you know when to destroy that fire handle and what else the Vinode pointer to point it to the actual file and also the The lock that protects the access to this fire handle, right? So that's the fire handle design and we also talk about the file table design File table is basically a just a map between the file descriptor, which is an integer to the fire handle So you can choose whatever that structure can meet the requirements that Giving a fire descriptor get a fire handle or found available fire descriptor And then we talked about what's already there for you to do the files is cause we talk about the Vinode and VFS so we both Vinode and VFS have some helper functions or macros to help you do the actual File read or file write or open the file or initialize a Vinode, right? And we then talk about the UIO Which you will be using in sysread and syswrite to actually perform the the actual read or write operation and Then we talked about a special file, which is cause console and There are three special fire descriptors associated with the console which is SDD in, SD out and SDD error And we talked about how to initialize them and we talked about when to initialize them And finally we go over the each of the file syscalls and Most of them are really easy if you know which on the line on the line call you need to use For example in sysopen you do whatever you need to do to the argument checking the fire handle maintenance Bookkeeping then you just call VFS open to do all the hard work and It says similarly for read and write where you just call viewp read or viewp viewp write to perform an actual read and write And I hope you guys have some idea of all of this so any questions of the contents of from last recitation Okay So when you so as I I was saying a Generous suggestion for this assignment is that you and your partner get together to get a file syscall working Before you move on to process these calls. So I saw a lot of Groups that submit a work one partner do the The file syscalls another one do the processes cause it won't work because You cannot test any processes cause unless you have all the files is already So one most fundamental thing is that to run all the test you should you are expected to see some Print from the user program, right those print is actually Write syscall to the console STD out file So if you don't have the sys write and sys open all those console initializer Initializer initialization ready. You cannot run any of the test So you should get a file syscall working first then working on the process is cause and here is how you can know You can sure you can be sure that you have a pretty solid file syscall First we have a test a program called file only test as a name suggest It will only test the file syscalls It won't test any of the fork and exact V way PRD and exit none of them So this test will only test your sys open sys read sys write LSEC and sys close So this is the first test. It should be pass when you When you're doing the file syscalls, then there is another General test program called better call which as a name indicate We will give you all kinds of bad arguments to kind of stress test your argument checking so you want to make sure you pass these two tests before you do the process is cause and I will show you what's the correct output of this text of this test So now I mean the in the kernel manual the first test I want to do is the test of being file and test Right, so you will see the output like this is saying it's opening a file is writing to that file is reading that file And then it's close that file So this this test test Program won't want to return to the manual as you can see that it says spinning in case of exit doesn't work So it won't call the exit as the normal see Program will do instead. It just just use a while one loop to avoid calling sys exit because you may not Mean you may not have access already at this point so this is the correct output of the final test and another test or is Test being better call right better call has another sub manual which you can choose Which of the cities call you want to test on so The the one related to the file is called in this assignment is C for open here and D for read E for write F for close and J for L C I think that's on and W for do to right you can run them individually for example around C Unfortunately, I think I don't I'm not present It is yeah, yes, it is so you should test that why it doesn't work. Anyway, let me run another kernel I have so many curves this Okay, so I run C for testing open It will pass in all kinds of better user pointers like now the kernel pointer or invalid pointer So now you can see why you want to use a copy in instead of just if the pointer equals Now I return some error if the pointer is in kernel space I return some error because there are so many cases where the pointer can go wrong You don't want to check against every of every one of them. So just use copy in which will test all the invalid pointers so and then for read for What was that other one? Right so You can see here it will possibly all kinds of bad FDs or passing or FD that has already been closed and All that so you can also run the test For all the six calls in some two once you have all of them all of them ready Including the process six calls. So for example, I can run this It would basically test all the six calls. Let's see Yeah, the test web PID exact V and all that So here is this is another test program called better call You want to pass both the file only test and also better call that related to to the file six calls Before you continue to the process six calls Any questions about the test program to test the user pointers because I saw a lot of you doing So, okay, I want to check invalid the user pointers So I check if the final pointer is now I return there some error code if it's larger than 0x at a million I return some error, but there are other cases where this this pointer can go wrong Which doesn't the following any of your special cases? So you want to handle all the invalid the pointer cases using copying sdr copying or copying str So that way the copying or copy copy str will handle all the invalid the user pointers Right instead of you check No, you need to cut first I look at a space. Yeah Yeah, and then our questions, okay So today we're gonna we're gonna most of full focus on the process six calls So we'll first talk about the process structure Then we will go over the process is called six calls, which is fork exact V web PID and exit So In this particular OS in OS one six one Each process will only contain one thread as Jeff talked about in the lecture the other operating system or more generally a process can have multiple threads Right, but in this particular OS one process can we only have one thread So about the process structure you can reuse whatever It is whatever is already there for the thread, right? So basically we in this particular OS we use a concept of process and a thread interchangable Right the process is a thread and thread is a process So the structure thread, which I think you are all very familiar with already have all kinds of process data, right? to make it running as a normal thread and what else do you need to add it to it to Help you manage all those processes. So first of all, of course, you need to edit the file table, right? when you do the fastest cause a more One of the first questions you want to ask yourself is that is that where do you put the five tables, right? Our file table should be per process Best you cannot just have one system wide file table, right? this is where you want to put the file tables in the thread structure and Then because we have later on we have with a PID and exit, right? You want to establish the relationship of the parent thread and child thread, right? So that parent thread can wait on the child thread. That's why you want to Keep the parent PID in it. First of all, you need a PID for each thread or for each process, right? So each process have a process ID and it also have a parent process ID Which indicate who created this process, right? And then you know again for what a PID and exit you want to include the information That whether this process or thread has exceeded if it has what's the exit code? So later on if some of us if some other thread or where PID on this right, you can just collect the exit code and Finally you want to have some synchronization Mechanisms going in in the thread structure so that say process a use fork process to create Excuse me to create process B Then before B call exit process a call way PID on B in that case You should block process a until the B exit, right? You should So you should have some some primitive to help you achieve that purpose, right? We have The primitives you have you have done in assignment one Lock CV semaphore you can choose whichever is using is suitable So any other questions about the process structure? What else what information you need to keep or what other what more extra information you need to add to the thread structure Anything missing here? Yeah, I don't think so so we basically cover all the information you needed to add it to the thread structure and And the process table so process table So you When when do the code reading questions? You would already know that the threads are organized as a link list in the per CPU based the wrong queue, right? Each spew has a link list which we wish is all the thread that are belong to that CPU and Here the process table is another kind of desk structure that help us to do other Bookkeeping many for web PID and exit So process table is very similar to File table in the sense that process table is also a mapping from the PID to the actual process structure In this case the process structure is just your thread structure, right? so When you when you allocate a thread in in fork you want to assign a PID So you need that you need a way to get an available or get the next available PID right, that's one of the functionality functionalities of the process table and In what a PID you you user give you a PID so given that a PID you want to find that on the line process structure or the thread structure that associated with as with that PID so you can either query the exit status code or get the exit or Sorry, either check the exit status or collect the exit Code from data thread right so you need a mapping between the PID and the process structure and again similar to file table you may choose whichever data structure that can Provide that a kind of functionality here. What's the most intuitive option of the data structure? Another array right So you basically you can have a ray of pointers Which in which the index is the PID and the pointers are pointing to the actual thread You may learn all kinds of fancy death structures in this desktop course and but at the end of day you will find that race is the most powerful one and So next we go over all the syscalls first of all fork So here is a piece of code that user will use fork So use the right code like this. I first call fork I get the return value and then I check the return value if it's positive meaning that I am Still this thread a says both says right a call fork So if the return value is positive we're still in thread a I mean the parent thread if it's zero Indicating that whatever the thread is is the child thread say thread B Otherwise if it's negative then something's wrong something wrong so the the semantics of fork is Is very is very simple right so you have one thread is in the process of execution Then at some point this radical fork now after fork suddenly you have to thread right the first is due the original thread But the second is identical to the first thread except for one thing which is the return value of the fork So the second thread will still feels like I guess come I just complete the fork syscall But the return value different from the one in the parent is zero right actually For close almost exactly The current process except for two piece of information, right? the first is PID or PPR and P PID which is trivial because First of all is there are two thread each thread or each process should have its own PID, right? Then the P PID is different because say it's right a call fork and create the thread B Of course, right B's P PID will be straight A, right? So it is P PID will be whichever thread whichever thread that created thread a right? so this is one information that one or the one difference of these two thread and Another difference is the return value of the fork although it may appear like both ready just to call fork and But then their return values are different So this is the semantics of fork any questions on that I mean it's maybe a little bit tricky to understand at first, but once You get more and more of it you come used to it Okay, so let's first take a look the exactly part So we said that fork will create an almost exactly same process with the current process So to copy a process what do you what do you need to copy? Right, so you need you need to first look at what's inside a thread structure or process structure And it just copy everything inside it right more particularly here in this OS 161 case Each process have has its own address base Which you can so how to copy the address base? What's that? Yes copy right which has been has been provided to you and That is copy belong to the dump VM that we have been using and in some is really you Maybe want to change that but but for now Let's just assume as copy do the magic stuff for it for us, right? We call as copy we get a complete identical address base with the current thread And then file table right this one is edited to by you So you are should have some idea of how to copy the file tables Right, so we said that file table is typically provided to each process Unless that process called fork In which case the two processes will share the same file table Right, so by by copying the file table. Are we actually copying the content of the file table? Say I have array which is belong to which is array in which is the file table of thread a After this fork should I have one array or two array? We still one right because the these file tables are supposed to shared between the A and B That's what we mean by a Copy the fact that we're not not actually copying the content of the file table We just make more faulty scooters pointing to the same file table entry Right, this is where you want to play with the reference count because now you have multiple thread or multiple Processes pointing to that file table entry Right, so so how would you copy the file table? I mean in the English So you want to go over the file table right because you don't know which one is used which one is not Right, if you you go to the file table and see if you have an entry there if you have an entry there you want to Sorry, I was saying that before there was only one array I was talking to the talking about the file handles. You still have two arrays of pointers Right The actual file handle will be only there will be only one copy of it But you may have multiple pointers pointing to that file handle, right? so you end up having two array of file table pointers and Some of them will may point to the same file handles right, so Go back to what are we saying to about how to copy the file table? You go over the file table entries of the original thread if it points to some file handle You just also let the new thread file table also pointed to it and in the meantime You will have to increment the reference count to indicate that multiple thread or multiple processes are referencing the same file table entry right and Finally a thread has a context by context. I mean so what is what is the context here? What's that? registers right so when when the original thread which is read a core fork, it's just it's a sis call Sis call is kind of an interrupt so whenever there is an interrupt the the kernel interrupt handle will always first freeze the Context of the current thread by saving all the registers in a destructure or call check frame, right? you want the Charles read has exactly almost exactly the same trend frame as the parents read Right, so somehow in the sis fork you should copy the transfer and I will get to We'll get to how to do it later. I think I Don't know if I have slides for that. But anyway so this other parts that we need to do in sis fork and you you You have you notice that they are much much more information in stress threat Structure thread right so who will copy them? I mean the the wish CPU it belongs to and what's the interruption level and all that information How do you copy that in that information? We just talk about the information we added or we need to do in sis fork What's the main body of? Create another thread Somebody says right fork. Yes. So thread fork will copy everything everything else right, so We copy this three part and thread fork copy the others so together. We're copying the entire process or thread um into Okay So now we have been we have talked about the exactly part where we copy all the stuff of the current thread To the new thread then so let's move on to the almost the part almost I mean that is there's something different Right, so as we mentioned the PID and PP ID is different Which is trivial right every time you allocate a new thread or I look at a new process You always find a new PID to it and you since you are handling the fog You know the parent and child relationship, so you can also set the child's PP ID correctly And the second part is the return value, right? So so parent Will return the child's PID while the child will just return zero Right, how do you achieve that effect? Yeah, actually I should add an animation to it. I shouldn't just give everything up to you at once, but anyway So any any ideas on how to How to trick the transfer to make the child things that the fork system called returns zero Yeah, so we talked about the MIPS return value convention That the one last time I think So the return value is solely based on what's stored in V zero register, right? If you start zero in it, then the user level pro program will think the Cisco returns zero, right? And what is next? So let's go over to the big picture of CIS fork, right? So in CIS fork, you know that You know what you need so you know finally we'll cause this thread fork to copy most of the stuff Right, but so one need to copy before that as we said in this part You need to copy the address space. I think is it handled in thread fork. I think so, right? So address space already be handled in thread fork the file table right the context context which means the Trip frame, so how do you copy the traffic? What's that? It's copy. No traffic You can yeah, yes, so traffic is nothing but a big big chunk of memory that contains the value of all the registers, right? So To copy the traffic you need a new place to store the traffic Which you can use came a lock to allocate at the kernel buffer that will contain the traffic Then you just use mem copy or you can just directly assign the strap structure value Small trick in C, but anyways is equivalent to a memory copy to that reference Then you pass the trip from to the child thread So the child's ready can get the trip from of the parent and also take the return value before the child thread Return through user mode. So that's about it. I mean Cis fork Any questions on the Cis fork Cisco? Oh, yes, of course when you copy the file table Yeah, actually we each thread has an array of file handle pointers Right, that that is your file table by copying the file table. I mean for each file handle We for each file for each file handle. We don't copy the content of the file handle Right, we only have one copy of the file handle and multiple threader can have pointers pointing to the same file handle All right, that's how you copy the file tables. Any other questions? Next is exact V Okay, so it what's the exact V are supposed to do All right, if you look at the manual page, you will find the exact V are supposed to Launch a new program and they replace everything in the current thread basically just get a new thread running But in this do in the same thread container, but with a whole different executable All right, so last time I think we demonstrate a case where you can use fork and exact V to write a small shell Right, so how would you how would you do that?  Say we have a shell thread, right the first thing you want to do is get some input, right? What user have typed I? Suppose you get a string that string represent what's the program? What's the arguments and all that then what they do? Do you want to just call exactly to run whatever the program is to replace yourself? You want to create a new thread right? You want you run whatever the program in the new thread right you do that by using fork which will create Identical copy of the of the shells right now you have two shells right or one of them is parent One of them is child and then you can differentiate them using the return value of the four Now in the in the child's right you call exact V Right, which where you replace yourself with whatever the new program is and you run the new program in the new thread Right in the in the parent thread you wet PID for that thread to wait for the user program complete right, this is how you can use fork and exact to write a simple shell and So the most trickiest part of the exact V because most of most of the functionalities is very very similar to run Program right you need to open the open the binary file you need to load load elf to into memory and Finally, you need to enter you enter user user process Right, so the main part is very similar to run program So keep that in mind and when you run when you write exist exact V try to Mimic the behavior of run program, but plus one thing which is argument of passing Right, so as I said, this is the most trickiest part of exact V So let's go over the an example of how to deal with argument passing Right, so this is the prototype of exact V here We we have two arguments the first argument is character pointer Which points to the name of the program and a second is an array of pointers each of them pointing to some arguments Right So here is what it looks like in currently user space before the user because before the thread called exact V Right, we have so first of all forget all the pointers here. We have Four strings the first string is a program man Which it has been our test a second string the full was 30 is os my six one and the finally We have bar so we have four strings here now. What's the what's the pointers? Right, so as I said the program are supposed to pointing to the program name in this case is a test being our test right, then the second argument is a Pointer to pointers which is a pointer to this Array of pointers here and Each each of them are pointing to the first the second third and fourth argument So you will notice that in this case the first pointer in the arcs array are pointing to the same string as the program right, so that's kind of The behavior of this minimal shell of OS one single that's that may not always the case So it does anybody know the busy box to busy box, but basically it's a multi-core Binary, so you have this one binary called busy box Right, then you have a bunch of symbol links to that binary You can have ours you have a cat and and everything right, but eventually you will You will you only have one binary and that binary will behave like whatever it links to it If you call errors, it will just a list of the current directory, but the actual binary is still that busy box That's achieved by so inside a busy box It will check the first argument which is the program name and if it's errors I do errors if it's some other cat I do cat it's called multi-core binary So this is kind of one trick you can do With arguments, but anyway, so in the conventions the first argument is always the program name Right, so this is what looks like before we call exact V. That's clear, right? Yeah What what do you mean? Okay, it's something else It's You will you will not encounter that case so you don't need to check that so it No, you should you just copy whatever is there, but when you when you Open the binary you always use the first argument, which is a program You can get you are guaranteed guaranteed that that program points to some actual binary You can run with and what the arguments you don't need to care about that's the that's the business of the actual program Yeah, so the the overall flow of exact V is like this So the first thing you want to do is copying all the arguments into you into the current space And why we want to do that? What's that? Yeah, because later on we need to destroy the current address space and create a new one Right if you don't copy the arguments out from the user space when you when you call is destroy You basically lose everything right? So you want to get a hand of all the arguments before you destroy you play with the address space Then you do whatever the wrong program does you call VFS open on the program You call a lot of elf on the on whatever the argument you need to use and then finally Before you enter new user process You need to arrange the arguments so that the new new user process Can't get all those arguments right? You cannot just pass the pointer the current buffer pointer to the user process because the user process Don't have access to that Right, so you need to copy out all the arguments to the new user space Right this copy in the first step and the third step copy out is the most difficult part of the exact V So Suppose so we know that every new user thread or every new user program We will start at the main function right the main function takes two arguments Which is the first is RTC meaning how much arguments are there and the second is ARGV which is pointing to the actual array of pointers which which is in 10 points pointing to the actual strings So if you look at the interface of enter new enter new process Where where is that to find trap to see The all the enter new process. Okay. I thought so this function takes the first argument is ARGC right which is corresponding to the ARGC in users main function and a second argument is the ARGV pointer, this should be a user pointer or the value of it should point into the user space And finally we have a step point to an entry point which helps the enter new process does its job But basically the first of two arguments Corresponding to what to the user's main function, right? And the user expect the ARGV in this particular format, which is very similar to the exact vc is called So ARGC is nothing but an integer indicating how many how many arguments are there? ARGV are supposed to be a Pointer to a pointer array Which and each entry of them should pointing to some strings or character character arrays Right, so this is what the user expect to have when we end when the user's program gets gets running right, so it's your job as a kernel or as the CIS XCV writer to Organize the arguments in this particular format so that the new user program can get all those arguments without any problem right, so this is what it expect when user program gets running and So a natural question to ask is where do you store all those arguments? You cannot store them in kernel buffer because user don't have access to the kernel So where do you need to store them? So first question is kernel space or user space of course user space and the second question is where you use a space? Stag right so user space where I have what have code segment data segment heap and a stack, right? So the heap Haven't that doesn't exist as its point because user haven't called my luck or whatever right the The fact is the only place that you know and for sure was the Where it is, right? So in this MIPS architecture the user stack always starting from OS OX at the medium which is a user address best top and grow downwards right, so So this is the only place where you know for sure where it is and you know that user won't By putting the arguments in here You won't interfere with the user as long as you update the stack pointer So user state user spread will just continue using the stack growing downwards. It will not Try to access the memory above the stack pointer, right? If you put the arguments in here, you know that you have a good place to use It's user space and user won't try to overwrite the the the memory So As you can see here, do we really care about where these strings are? I mean, do we want to align the strings in some way to organize them? No, right? So what the only thing matters here is this pointer Array as long as we have this pointer array are ready, right? Then we don't care. We don't really care where we place all those strings As because we know that the first pointer we always point into the first argument no matter where the argument is right, so what do you? Care most about is how to get these pointer array Correct as long as have you had you have this correct user will have access to all to all of those arguments right, so this is one possible arrangement of the arguments right starting from there We have user stack top, which is the absolute value of all x at a medium So this is zero. This is all I mean oh x at a medium these two gigabytes space is user space virtual address space and We start cop so we start this array zero one two Three somewhere in stack in this particular Figure I put in the in here, but you can put it put it anywhere and and Each of them pointing to some strings in again in user stack Again here I put from top down four OS one six one bar and the first it has been our test You can arrange it whatever way you want, but What it really matters is this the order of this array pointer array, right as well as as well as you have this array Ready or correct user can already de-referencing these pointers to get the strings right, then you So if you think about it How would you actually do it? How do you actually copy the arguments? So Say you already have this you already have copied all the arguments into user space when you call enter new process What's these deck pointer value? This is it should be somewhere Here or below here, right? You don't want to Set a stack pointer to be somewhere here I'll in that a case when users program gets running the stack pointer will overwrite this region Right, you want to put the stack pointer somewhere below or equals to this? bottom of this of this part of this part, right then what's the RGV as As the this figure says RGV should be here, right? So if you associate this this figure with the previous one You find that RGV should point into the start of the array Right, so this is one possible case so Again, how do you know how many space you need? To store all these all those arguments So in this particular case we have one two three four arguments Right the total space you need to store these arguments in the user stack is the four pointers plus whatever the string occupies Right, you may need to do some alignment for each string for example this OS one six one is five characters plus one zero Character at the end you have to in total six characters, right? You may want to Align up to add characters to make sure everything is aligned by four. That's but but that's Kind of a minor thing So here you need in total that many space to store all these arguments, right? Once you get that number What you can get you can get where this is Right, what's what's the bottom where to start copying? Then you can just then you get when you once you get this address you can just to copy first copy the The arrays or set of the value to it then copy all the strings upwards Right, so you need to do some calculation to figure out of how many space you need Then you just reserve this much space from user stack and do copy this arguments in it Any questions on this? No, everybody understand how it works What's that? Alignment I think so. Yeah, so in because because in MIPS we require every pointer the value is aligned by four so if you have An array pointer that is not aligned by four, I think that will cause the some segment of segment of fault Yeah, so it's better to align everything. So finally we have exit and a web PID Oh So these two you want to write them together because they're kind of the Coordination function that when reliable relies on each other. So in exit The is pretty simple. Are you sort of first store the exit code? Whatever the exit code user passing you just saw that in the structure Then you indicate that is this right has exited by setting some flag on the straight structure Then you just call stress exit to just clean up everything in web PID So you you you first want to check if the child has exited Right, if it has not then you need to figure out a way to put the current thread into sleep And then if it has exited you just collect the exit code and This is how you can test the Process systems first of all you want to run the shell So there are two ways to run a test of program, right? One is using P test being something to run it that way is using the wrong program Once you have exit exit V ready, you want to use your exit V instead of wrong program. So you first run shell I will show you how to As for shell now you are in shell you can use in just the direct parts of the Fog test this is one test you don't have to do P something you can just directly type the binary name and Yeah, I run up memory I think and For fork you want to test both for test and a fork bomb in case of fork bomb It shouldn't print any error message other than that it says there is no memory if your implementation is good and for exact V you want to use the ARC test to Test it the artist is basically does nothing but just to print all those arguments So if you type this and you see that text ARC tests are printing a b c d f g h You know your exact V is good And of course when you need to run better call for all the arguments to make sure your argument checking is good any questions about That V Y PID and exit. What's that? It's different person. Yeah Okay, so that's that'll be it good luck with the assignment


Welcome to Reading an Inch Micrometer. Every occupation in the machine tool industry requires the use of precision measuring tools. In this unit, you'll learn the basics of micrometer measurement. A micrometer can use metric measurements. However, this learning activity will focus on an inch micrometer. A micrometer is a precision measuring instrument that has many applications. Micrometer readings are in decimal form. Reading a micrometer can be compared to counting money. When you add all of the coins and cash together, you have a total of $3.88. If you remove the dollar sign and move the decimal point one place to the left, your measurement is 388 thousandths of an inch. Precision measurement of parts is a daily activity in machining. Understanding the proper use of a micrometer is essential for success in this field. You have completed this learning activity, reading an inch micrometer.


Winner Home is proudly brought to you by Private Property. Finding your new home on Private Property is really simple. Sign up for instant alerts and they'll send the properties to you. There's a home for everyone on Private Property.


Hello, Longmont. I try not to complain about things if I haven't tried to change them. Serving on an advisory board or commission is a terrific way to be in touch with the issues that matter to you and to make a difference. To learn more and apply, visit Longmont, Colorado dot gov slash boards.